我有一个共享的Project.Core
类库,还有
public class SomeClass
{
//properties
//methods
}
public class AnotherClass
{
//properties
//methods
}
然后我有一个引用项目的网络应用程序(Project.Web
)和桌面应用程序(Project.Client
),在那里我想为SomeClass
添加一些扩展名,所以
public class SomeClass : Project.Core.SomeClass
{
//Extensions
}
但如果文件中包含
,则会导致Project.Web.SomeClass
和Project.Core.SomeClass
之间存在歧义
using Project.Core //to refer uninherited classes in the class library
using Project.Web //to refer inherited Project.Web.SomeClass
public class MyClass
{
public SomeClass SomeClass { get; set; } //Ambiguousness
public AnotherClass AnotherClass { get; set; }
}
所以我有两种方法:将类库中的名称更改为SomeClassCore
或将继承的类更改为SomeClassWeb
和SomeClassClient
。
哪个是更好的选择,还是有另一种聪明的方式?
答案 0 :(得分:4)
您可以使用命名空间的别名。只需为要导入的命名空间定义一些别名,并引用命名创建歧义的别名
在您的情况下,您可以为名称空间命名,而不是更改类的名称。这是代码:
using web = Project.Web
using core = Project.Core
如果你想从两个项目中引用SomeClass
,那么你可以写这样的东西
web.SomeClass //This will refer class from Project.Web
core.SomeClass //This will refer class from Project.Core
Using Directive您可以在此处找到有关使用指令和别名参考
的更多信息