【发布时间】:2013-01-01 08:51:54
【问题描述】:
我有一个要重写的方法:
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 是WhateverClass...
我也有这个方法需要重写
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
我想做:
var e = value as MyClass<T, I>;
在那里。所以我想我真的需要添加
<T,I>
到班级本身?
【问题讨论】:
-
我认为它应该对您有所帮助 [链接 1][1] [链接 2][2] [1]:stackoverflow.com/questions/1349227/… [2]:stackoverflow.com/questions/9197384/…
-
看起来
MyClass<T,I>不是包含CanConvert的类型,因为您提到了一个超类。您能否显示包含您对CanConvert的覆盖的类的声明?具体来说,该类是否具有(至少)两个类型参数,称为T和I?
标签: c# class generics overriding