[英]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.