Ins*_*ter 2 .net c# user-controls visual-studio winforms
我IEnumerable<SomeClassIWrote>在用户控件中有一个类型的属性.当我在GUI中使用此控件时,.Designer.cs文件包含以下行:
theObject.TheProperty = new SomeClassIWrote[0];
Run Code Online (Sandbox Code Playgroud)
由于某种原因导致编译器警告:
Object of type 'SomeClassIWrote[]' cannot be converted to type
'System.Collections.Generic.IEnumerable`1[SomeClassIWrote]'.
Run Code Online (Sandbox Code Playgroud)
这对我来说是一个谜,因为我一直将数组作为IEnumerables传递,编译器从未抱怨过.
对于它的价值,我有一个为属性指定的默认值null,但在设置默认值之前我得到了相同的错误.
我如何解决这个问题,以便Visual Studio不会抱怨并让我忽略并在每次拉起设计师时继续?
物业代码:
[DefaultValue(null)]
public IEnumerable<SomeClassIWrote> TheProperty {
get {
return _theProperty;
}
set {
if (value == null) {
_theProperty = new SomeClassIWrote[] { };
}
else {
_theProperty = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
首先,您是否希望能够在设计师中设置它?
如果没有,请添加以下属性:
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
Run Code Online (Sandbox Code Playgroud)
如果你想在设计师中设置,我首先尝试你的课程SomeClassIWrote[],看看是否有效.
除此之外,在这里使用IEnumerable是否重要?如你所说,你可以将数组作为IEnumerables传递.
我怀疑设计师内部可能存在一些限制,比我更了解...
如果你真的想要IEnumerable属性,你可以将你的数组暴露为IEnumerable,但是将你的数组保持为设计者友好的支持字段.
| 归档时间: |
|
| 查看次数: |
2504 次 |
| 最近记录: |