我正在为类型实现IEnumerable<T>
,如下所示;
public class AType: IEnumerable<T>
当客户端将IEnumerable<T>
的实例分配给AType实例时,如何才能控制类型的set属性?这是可能的还是我必须通过IEnumerable<T>
类型的公共成员;
答案 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
}