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>
中實現的其他接口)來實現它?