2
考虑以下类:隐式转换泛型类型的非仿制药
public abstract class MyRecordClass
{
public int id { get; private set; }
}
public class ExampleMyRecordClass : MyRecordClass {}
public enum SomeIntEnum : int {}
public class MyList<T, E> : IList<T>
where T : MyRecordClass
{
}
public class MyOtherClass
{
public void MyMethod(MyList<T, E> list) {}
}
,我想这样调用方法:
MyList<ExampleMyRecordClass, SomeIntEnum> myList;
MyOtherClass myOtherClass;
myOtherClass.MyMethod(myList);
然而,这不会如果传递类型MyList<ExampleMyRecordClass, SomeIntEnum>
的列表,实际上工作,因为隐式的upcasts在泛型中不起作用。由于我真正想要的是财产id
,我当然可以在MyList<T, E>
中明确实施财产或方法,并返回一个包含此信息的新集合。
我更愿意做的是让它隐式完成。有没有一种方法(可能是一个隐式操作符,或者在MyList<T, E>
中实现的其他接口)来实现它?