我有那个界面:

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/

10-11 22:25
查看更多