所以我的真正方法有很大不同,但我归结为这一点。<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
。
所以我错在哪里。能够做到这一点的想法不就是 - 在编译时声明一个通用类型并在运行时转换为更具体的类型吗?