ですから、私の実際の方法は大きく異なりますが、私はこれに行き着きます。<T>
ジェネリックメソッドを使用しているときに、ジェネリック型を処理する方法を完全に理解していないようです。私の理解では、同じロジックを異なるタイプで機能させたい場合はジェネリックメソッドを使用しますが、実行時に正確なタイプを自由に決定できるようにしたいのです。ですから、私がこのような方法を持っているとき、それは私にはかなり自然に思えます:
internal static void ChangeCode<T>(Entity entity) where T : Entity
{
T tempEntity;
if (entity.GetType() == typeof(SomeMoreSpecificEntity))
{
tempEntity = new SomeMoreSpecificEntity();
}
}
ただし、このようなことをしようとすると、エラーが発生しますCan not convert type T to SomeMoreSpecificEntity
。
だから私はどこが間違っているのですか。これを正確に実行できるようにするという考えではありませんか?コンパイル時に共通の型を宣言し、実行時により具体的な型にキャストしますか?