我有那个界面:
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 来做到这一点,检查 object 类型。但我正在寻找一个通用的解决方案。
我需要获取Id值(作为字符串,所以我不关心T是什么)
示例:
var idString = ((IEntityWithTypedId<long>)object).Id.ToString();
这可能吗?
最佳答案
添加另一个接口(interface)
public interface IEntityStringId
{
String IDString { get; }
}
public interface IEntityWithTypedId<T> : IEntityStringId
{
}
然后转换到该接口(interface):
var idstring = ((IEntityStringId)obj).IDString;
关于c# - 在不知道类型的情况下将对象转换为泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26410643/