簡體   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