我想做这样的事情:
Plan
具有Contact
属性,并且有Plan
和Contact
的特殊化。
我尝试了
abstract class Contact { }
class SpecialContact : Contact { }
abstract class Plan {
public virtual Contact contact;
}
class SpecialPlan : Plan {
public override SpecialContact contact;
}
但是C#中禁止类型重写。
如何建模并专门化子类的子属性?
我只需要强制执行SpecialPlan
仅具有SpecialContact
..而不具有其他Contact
答案 0 :(得分:3)
b
如果您要覆盖get / set属性。
void Main()
{
var sp = new SpecialPlan();
sp.Contact = new SpecialContact(); // new Contact(); won't compile
}
abstract class Contact
{
}
class SpecialContact : Contact
{
}
abstract class Plan<T> where T: Contact
{
public T Contact { get; set; }
}
class SpecialPlan : Plan<SpecialContact>
{
}