在共享项目中命名 类

Naming classes in shared project

我有一个共享的 Project.Core class 图书馆还有

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; }
}

所以我有两种方法:将 class 库中的名称更改为 SomeClassCore 或将继承的 classes 更改为 SomeClassWebSomeClassClient.

哪个是更好的选择,或者有其他聪明的方法吗?

您可以为命名空间使用别名。只需为您要导入的名称空间定义一些别名,并在命名产生歧义的地方引用别名

在您的情况下,您可以为名称空间设置别名,而不是更改 class 的名称。这是代码:

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 在这里你可以找到更多关于使用指令别名引用