[英]How to override the type of a member in abstract class in child class
我有以下代碼:
public abstract class TestProperty
{
public abstract Object PropertyValue { get; set; }
}
public class StringProperty: TestProperty
{
public override string PropertyValue {get;set}
}
哪個會產生編譯錯誤,我想知道我是否必須在TestProperty中使用泛型類型才能實現我的目標,即在子類中具有相同名稱的不同類型?
是的,C#不支持協變返回類型。 您確實可以在此處使用泛型:
public abstract class TestProperty<T>
{
public abstract T PropertyValue { get; set; }
}
public class StringProperty : TestProperty<string>
{
}
此時無需重寫-實際上,除非您要執行其他任何操作,否則不妨完全擺脫StringProperty
而只需使用TestProperty<string>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.