c#泛型类和重写方法
本文关键字:方法 重写 泛型类 | 更新日期: 2023-09-27 17:50:31
我想重写一个方法:
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 is WhateverClass…
我也有这个方法,我需要重写
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
设置为泛型。
我认为错误的真正原因是你在问题中没有提到的其他东西。