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; }
}