And*_*ler 17 c# class partial-classes
我目前有一个多个项目的解决方案,大多使用相同的类.因此,在我看来,在解决方案中添加包含这些类的类库是一个好主意,而不是在每个项目中重复该类.
但是,我所拥有的一个项目需要一些特定于该项目的类的附加属性,并且不会在其他任何地方使用.结果,我认为我应该使用部分类来添加这些属性.所以我做了类似这样的事情:
在类库中:
namespace MyClassLibrary
{
public partial class Book
{
public string Title { get; set; }
public string AuthorLast { get; set; }
public string AuthorFirst { get; set; }
public string Publisher { get; set; }
public string Edition { get; set; }
public string ISBN10 { get; set; }
public string ISBN13 { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
在项目中(MyProject):
namespace MyClassLibrary
{
public partial class Book
{
public string AdditionalProperty { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
我在MyProject(C#windows表单应用程序)中引用了MyClassLibrary,但是当我尝试在表单的代码隐藏中使用此类时,我收到以下错误:
class MyClassLibrary.Book
警告:类型 'MyClassLibrary.Book' 在 'C:...(项目)' 的冲突在 'C:...(类库DLL)' 进口型 'MyClassLibrary.Book'.使用'C:...(项目)'中定义的类型.
知道我做错了什么,或者我的整个方法是不好的,我应该做些什么呢?
Rex*_*x M 21
部分不适用于跨越装配.如果需要添加到类中以获得更具体的用法类型,则应创建派生类:
public class MyFoo
{
public string BasicProperty {get;set;}
}
public class MySpecificFoo : MyFoo
{
public string AnotherProperty {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
在需要更具体类型的MyFoo的项目中,请使用MySpecificFoo.由于它继承/派生自MyFoo,因此它将具有MyFoo的所有属性和功能,以及其他属性.这是多态性的一部分,这是OOP的真正力量所在.
归档时间: |
|
查看次数: |
6114 次 |
最近记录: |