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是的,这就是我想要做的