我有一个接口:转换一个对象到一个泛型类不知道类型
public interface IEntityWithTypedId<T>{
T Id { get; }
}
而且有两类:
public abstract class EntityWithTypedId<TId> : IEntityWithTypedId<TId>{...}
public abstract class Entity : EntityWithTypedId<int>{...}
所以,我有实体这样的:
public class TestA : Entity
public class TestB : EntityWithTypedId<string>
public class TestC : EntityWithTypedId<byte>
现在我有一个对象并需要将它投射到IEntityWithTypedId<T>
我可以这样做嵌套ifs,检查对象类型。但我正在寻找一个通用的解决方案。
我需要得到标识值(字符串,所以我不关心什么是T)
例子:
var idString = ((IEntityWithTypedId<long>)object).Id.ToString();
这可能吗?
如果你不知道'T'甚至作为一个泛型类型参数,你会怎么想到用它?也许你应该有一个非泛型的接口,你可以将其转换为(或者也可以)... – 2014-10-16 17:44:03
我的IEntityWithTypedId有一个属性Id,我需要将该值作为一个字符串(所以我不在乎T)。这样的事情︰var id =((IEntityWithTypedId)object).Id.ToString() –
Paul
2014-10-16 17:51:13
对,所以你应该有一个非通用的接口,因为我建议... – 2014-10-16 18:04:54