访问C#中内部泛型的成员
本文关键字:成员 泛型 内部 访问 | 更新日期: 2023-09-27 18:19:53
我定义两个接口如下:
public interface IData
{
double value { set; get; }
}
public interface IInterval<C, M>
{
C left { set; get; }
M data { set; get; }
}
然后我使用这两个接口来进行下面的类声明。
public class TESTClass<I, M>
where I : IInterval<int, M>, new()
where M : IData
{
public I interval{ set; get; }
public TESTClass()
{
// This is invalid, cos property value is not visible at initialization ...
interval = new I() { left = 0, data.value = 0 };
// instead I have to do as:
interval = new I() { left = 0 };
interval.data.value = 0;
}
}
我是不是遗漏了什么?如果你能帮我弄清楚,我将不胜感激。
当然可以。语法有点不同。
public TESTClass()
{
interval = new I()
{
left = 0,
data = //Reads data property,
{
value = 0 //set data.value to 0
}
}
}
不能使用成员访问运算符(.
)访问对象初始化器中的子属性。
这项工作:
public class TESTClass<I, M>
where I : IInterval<int, M>, new()
where M : IData, new()
{
public I interval{ set; get; }
public TESTClass()
{
interval = new I() { left = 0, data = new M {value = 0} };
}
}