在共享项目中命名 类
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.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; }
}
所以我有两种方法:将 class 库中的名称更改为 SomeClassCore
或将继承的 classes 更改为 SomeClassWeb
和 SomeClassClient
.
哪个是更好的选择,或者有其他聪明的方法吗?
您可以为命名空间使用别名。只需为您要导入的名称空间定义一些别名,并在命名产生歧义的地方引用别名
在您的情况下,您可以为名称空间设置别名,而不是更改 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 在这里你可以找到更多关于使用指令和别名引用
我有一个共享的 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.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; }
}
所以我有两种方法:将 class 库中的名称更改为 SomeClassCore
或将继承的 classes 更改为 SomeClassWeb
和 SomeClassClient
.
哪个是更好的选择,或者有其他聪明的方法吗?
您可以为命名空间使用别名。只需为您要导入的名称空间定义一些别名,并在命名产生歧义的地方引用别名
在您的情况下,您可以为名称空间设置别名,而不是更改 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 在这里你可以找到更多关于使用指令和别名引用