C# DesignerSerializationVisibility(隐藏)、EditorBrowsable(从不)等在使用界面时不工作
创建界面和用户控件C# DesignerSerializationVisibility(隐藏)、EditorBrowsable(从不)等在使用界面时不工作,c#,interface,visual-studio-2015,user-controls,designer,C#,Interface,Visual Studio 2015,User Controls,Designer,创建界面和用户控件 public interface IMyUserControl { [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [EditorBrowsable(EditorBrowsableState.Never)] [Bindable(false)] [Browsable(false)] [ReadOnly(true)] object M
public interface IMyUserControl
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[EditorBrowsable(EditorBrowsableState.Never)]
[Bindable(false)]
[Browsable(false)]
[ReadOnly(true)]
object MyProp { get; set; }
}
public partial class MyUserControl : UserControl, IMyUserControl
{
public MyUserControl()
{
InitializeComponent();
}
public object MyProp { get; set; }
}
然后构建项目并将MyUserControl从工具箱中放到Form1中。
请参阅Form1.Designer.cs
private void InitializeComponent()
{
// other code
this.myUserControl1.MyProp = null;
// other code
}
但是下面的代码可以正常工作(设计器不生成this.myUserControl1.MyProp=null)
这完全是出于设计,代码序列化程序使用反射来查看属性上的属性,它的查看深度不超过此。解决方法对您来说已经很明显了,所以请使用它。太糟糕了。可能会忘记放置属性。感谢您的回答。这完全是出于设计,代码序列化程序使用反射来查看属性上的属性,它不会比这更深入。解决方法对您来说已经很明显了,所以请使用它。太糟糕了。可能会忘记放置属性。谢谢你的回答。
public partial class MyUserControl : UserControl, IMyUserControl
{
public MyUserControl()
{
InitializeComponent();
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public object MyProp { get; set; }
}