给定以下类:
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);
但是,如果传递 type 列表,这实际上不起作用MyList<ExampleMyRecordClass, SomeIntEnum>
,因为隐式向上转换在泛型类型中不起作用。由于我真正想要的只是属性id
,因此我当然可以显式地实现一个属性或方法,MyList<T, E>
以返回包含此信息的新集合。
我更愿意做的是隐含地完成这项工作。有没有办法(可能是一个隐式运算符,或者一个额外的接口来实现 in MyList<T, E>
)使这成为可能?