我有一个我想覆盖的方法:
public override bool CanConvert(Type objectType)
(注意:我无法修改超类。)无论如何,在我想要做的这个重写方法中:
return typeof(MyClass<T, I>).IsAssignableFrom(objectType);
MyClass是抽象的。我自己写了。
Intellisense强调了通用部分。所以我必须使方法通用。但是方法签名与覆盖不兼容。
我该怎么办?
编辑:
MyClass的:
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是WhateverClass ......
我也有这个方法需要覆盖
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
我想这样做:
var e = value as MyClass<T, I>;
在那里。所以我想我真的需要添加
<T,I>
到班上自己?
答案 0 :(得分:0)
正在编译以下代码:
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
成为通用的。
我认为错误的实际原因是你在问题中没有提到的其他原因。