我有那个界面:
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 ,检查对象类型。但我正在寻找通用的解决方案。
我需要获取 Id 值(作为字符串,所以我不在乎什么是T)
示例:
var idString = ((IEntityWithTypedId<long>)object).Id.ToString();
这可能吗?
答案 0 :(得分:2)
添加另一个界面
public interface IEntityStringId
{
String IDString { get; }
}
public interface IEntityWithTypedId<T> : IEntityStringId
{
}
然后转到该界面:
var idstring = ((IEntityStringId)obj).IDString;