为什么扩展方法不能使用名称空间别名?这可能是一个无知的问题,但我不确定为什么我不能将命名空间别名和扩展方法一起使用。以下示例工作正常:使用系统;在Program.cs中使用ExtensionMethodTest.Domain;namespaceExtensionMethodTest{classProgram{staticvoidMain(string[]args){varm=newDomain.MyClass();varresult=m.UpperCaseName();}}}MyClass.cs使用系统;namespaceExtensionMethodTest.Domain{publicclassMyClass{publicstringName{get;放;}}}MyClassExtensions.cs使用系统;namespaceExtensionMethodTest.Domain{publicstaticclassMyClassExtensions{publicstaticstringUpperCaseName(thisMyClassmyClass){returnmyClass.Name.ToUpper();但是当我像这样在Program.cs中对域进行别名时:usingDomain=ExtensionMethodTest.Domain;扩展方法不再起作用..当我处理将各种域对象转换为Web服务的合同对象(假设我有4个域程序集和4个合同程序集)时,这可能会非常令人沮丧。使用别名会非常方便,因为我可以按如下方式使用别名并继续使用各种扩展方法(如ToContract等):使用IssuingContracts=Namespace.Issuing.Contracts;等等...我期待着答案......我确信这是直截了当的,但是,对于我的生活,我无法弄清楚为什么它不起作用。谢谢!确保仍然添加无别名的using语句:usingSystem;在Program.cs中使用ExtensionMethodTest.Domain;//不要忘记非别名使用usingMyDomain=ExtensionMethodTest.Domain;namespaceExtensionMethodTest{classProgram{staticvoidMain(string[]args){varm=newMyDomain.MyClass();varresult=m.UpperCaseName();}}}MyClass.cs使用系统;namespaceExtensionMethodTest.Domain{publicclassMyClass{publicstringName{get;放;}}}MyClassExtensions.cs使用系统;namespaceExtensionMethodTest.Domain{publicstaticclassMyClassExtensions{publicstaticstringUpperCaseName(thisMyClassmyClass){returnmyClass.Name.ToUpper();我也喜欢使用名称空间别名,但在扩展方法的情况下它不起作用。所以我做的一件事是,我将扩展类的命名空间更改为与我的主项目相同的命名空间(尽管我的扩展类位于主项目的子文件夹中)。假设我有一个项目myFirstProj,它必须有根类命名空间myFirstProj。我的扩展类存在于myFirstProj/Common/myExtensionClass中,包含命名空间myFirstProj.Common{//myExtensionClass}。所以我现在所做的是,我将myExtensionClass的命名空间从命名空间myFirstProj.Common{//myExtensionClass}更改为命名空间myFirstProj{//myExtensionClass}。现在我可以在整个项目的myFirstProj事件中使用我的扩展方法,而无需为我的扩展类指定using语句。我知道这不是标准方法,但我没有找到任何其他解决方法,因为对于我的项目名称空间,项目名称空间的别名是必需的。以上是C#学习教程:为什么扩展方法对命名空间别名不起作用?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
