繁体   English   中英

C#泛型类和重写方法

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM