C# 覆盖IEnumerable<;T>;设置属性;

C# 覆盖IEnumerable<;T>;设置属性;,c#,C#,我正在为一个类型实现IEnumerable,如下所示: public class AType: IEnumerable<T> 公共类类型:IEnumerable 当客户端将IEnumerable的实例分配给AType的实例时,如何控制该类型的set属性?这是可能的还是我必须通过类型为IEnumerable的公共成员 实际需要创建自己的可枚举类型并不常见。我想你真正想要的是这样一门课: public class Foo<T> { IEnumerable<

我正在为一个类型实现
IEnumerable
,如下所示:

public class AType: IEnumerable<T>
公共类类型:IEnumerable

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

实际需要创建自己的可枚举类型并不常见。我想你真正想要的是这样一门课:

public class Foo<T>
{ 
    IEnumerable<T> _aTypes;
    public IEnumerable<T> ATypes 
    {
         get { return _aTypes; }
         set 
         {
             //do your custom logic
             this._aTypes = value;
         }
    }  
}
公共类Foo
{ 
i可数类型;
公共IEnumerable类型
{
获取{return\u aTypes;}
设置
{
//执行自定义逻辑
这个。_aTypes=值;
}
}  
}

我的建议是使用接口,但我忘了在这种情况下不能使用接口作为源

这让我想到最好的解决方案是添加第二个构造函数来处理您的案例:

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
}
公共类类型:IEnumerable
{
public AType()//如果需要,可以使用无参数构造函数
{
}
公共AType(IEnumerable源)
{
//使用源中的数据初始化AType
}
//IEnumerable接口的实现如下
}

你的问题毫无意义。您肯定会将
AType
的实例或从
AType
派生的类型的实例分配给
AType
变量?您所说的“类型的集合属性”是什么意思?您的意思是要创建隐式/显式强制转换覆盖,以将
IEnumerable
转换为
AType
?@John是的,这就是我想要做的