覆盖IEnumerable <t> set属性;

时间:2018-06-03 14:37:49

标签: c#

我正在为类型实现IEnumerable<T>,如下所示;

public class AType: IEnumerable<T>

当客户端将IEnumerable<T>的实例分配给AType实例时,如何才能控制类型的set属性?这是可能的还是我必须通过IEnumerable<T>类型的公共成员;

2 个答案:

答案 0 :(得分:1)

您实际上需要制作自己的可枚举类型并不常见。我认为你真正想要的是一个类似的课程:

public class Foo<T>
{ 
    IEnumerable<T> _aTypes;
    public IEnumerable<T> ATypes 
    {
         get { return _aTypes; }
         set 
         {
             //do your custom logic
             this._aTypes = value;
         }
    }  
}

答案 1 :(得分:0)

我的建议是使用cast operator override,但我忘记在这种情况下您无法使用界面作为来源。

这使我认为最好的解决方案是添加第二个构造函数来处理你的情况:

public class AType<T>: IEnumerable<T>
{
    public AType() // parameterless constructor if you need it
    {
    }

    public AType(IEnumerable<T> source)
    {
        // use data from source to initialize AType
    }

    // implementation of IEnumerable<T> interface goes here
}