我有那个界面:
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();
那可能吗?
最佳答案
添加另一个界面
public interface IEntityStringId
{
String IDString { get; }
}
public interface IEntityWithTypedId<T> : IEntityStringId
{
}
然后投射到该接口:
var idstring = ((IEntityStringId)obj).IDString;
关于c# - 在不知道类型的情况下将对象转换为通用类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26410643/