在共享项目

时间:2018-02-08 07:27:42

标签: c# inheritance naming-conventions class-library

我有一个共享的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.SomeClassProject.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或将继承的类更改为SomeClassWebSomeClassClient

哪个是更好的选择,还是有另一种聪明的方式?

1 个答案:

答案 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您可以在此处找到有关使用指令别名参考

的更多信息