[英]C# generic class and overridden method
我有一個方法要覆蓋:
public override bool CanConvert(Type objectType)
(注意:我無法修改超類。)無論如何,在此覆蓋的方法中,我想執行以下操作:
return typeof(MyClass<T, I>).IsAssignableFrom(objectType);
MyClass是抽象的。 我自己寫的。
Intellisense強調了通用部分。 因此,我必須使該方法通用。 但是,然后方法簽名與覆蓋不兼容。
我該怎么辦?
編輯:
我的課:
MyClass<T,I> where T : MyClass<T,I>
編輯2:
包含方法的類:
public class ReferencesJsonConverter : JsonConverter
我是否需要添加
<T,I>
參考ReferencesJsonConverter? 不幸的是,因為該類的用法如下:
[JsonConverter(typeof(ReferencesJsonConverter))]
public virtual WhateverClass whateverclass {get;set;}
T是任何類...
我也有需要重寫的方法
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
我想要做:
var e = value as MyClass<T, I>;
在那里。 所以我想我真的需要補充
<T,I>
自己上課?
以下代碼正在很好地編譯:
public abstract class MyBaseClass
{
public virtual bool CanConvert(Type objectType)
{
return false;
}
}
public abstract class MyClass<T,I> : MyBaseClass
where T : MyClass<T,I>
{
public override bool CanConvert(Type objectType)
{
return typeof(MyClass<T, I>).IsAssignableFrom(objectType);
}
}
如您所見,不需要使方法CanConvert
成為泛型。
我認為錯誤的實際原因是您在問題中未提及的其他原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.