访问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;
   }
}

我是不是遗漏了什么?如果你能帮我弄清楚,我将不胜感激。

访问C#中内部泛型的成员

当然可以。语法有点不同。

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} };
   }
}