0

オーバーライドしたいメソッドがあります:

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>

クラス自体に?

4

1 に答える 1

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をジェネリックにする必要はありません。

エラーの実際の理由は、質問で言及していない他の何かだと思います。

于 2013-01-01T09:12:42.293 に答える