【发布时间】:2018-02-08 07:27:41
【问题描述】:
我有一个共享的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。
哪个是更好的选择,还是有其他聪明的方法?
【问题讨论】:
-
这真的只是见仁见智。但是我的 意见是重用类名是没有意义的。
SomeClass大概是Project.Core.SomeClass,加上一些东西。它的名称应该反映已添加的“一些东西”。如果您想更改基类名称,那也没关系。但我认为更改派生类的名称会更典型(参见,例如Stream、vsFileStream、MemoryStream等) -
在具有两个 using 语句的类中的另一个选项是在实例化它时使用完全限定名称:
Project.Core.SomeClass pcSomeClass = new Project.Core.SomeClass()
标签: c# inheritance naming-conventions class-library