为啥 .NET 设计师创建这样的代码: Classes.Customer customer1 = new Classes.Customer();

Posted

技术标签:

【中文标题】为啥 .NET 设计师创建这样的代码: Classes.Customer customer1 = new Classes.Customer();【英文标题】:Why .NET designer create code like this: Classes.Customer customer1 = new Classes.Customer();为什么 .NET 设计师创建这样的代码: Classes.Customer customer1 = new Classes.Customer(); 【发布时间】:2015-07-20 14:14:13 【问题描述】:

我使用 C#、.NET 4.5.1、VS 2013。

如果我创建一个这样的 UserControl,其属性包含另一个类,谁能准确解释我以及为什么:

public partial class CustomerSelect : UserControl

    public Classes.Customer Customer
    
        get  return customer; 
        set  customer = value; 
    
    private Classes.Customer customer;

    public CustomerSelect()
    
        InitializeComponent();
        customer = new Classes.Customer();
            

当我将此控件放在 Windows 窗体上时,他会在设计器中生成该代码:

Classes.Customer customer1 = new Classes.Customer();
this.customer1 = new Classes.Customer();

以下:

// 
// customerSelect1
// 
this.customerSelect1.Customer = customer1;

为什么他会自动创建一个新客户?我尝试使用 = null, = new Classes.Customer() 更改私有属性的初始化,删除我的控件,代码,再次添加,我总是得到相同的结果。

如果有人能解释一下我理解的错误,谢谢。

【问题讨论】:

对不起,我错误地删除了第一条评论,他说我有关 DesignerSerializationVisibility。似乎只是要设置的隐藏参数。 【参考方案1】:

这是具有 getter 和 setter 的公共属性的正常行为,该属性在设计时具有不是 [DefaultValue] 的值。您必须告诉设计者不要序列化该属性,也不要在“属性”窗口中显示它:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public Classes.Customer Customer

    get  return customer; 
    set  customer = value; 

【讨论】:

以上是关于为啥 .NET 设计师创建这样的代码: Classes.Customer customer1 = new Classes.Customer();的主要内容,如果未能解决你的问题,请参考以下文章

为啥 .NET 自带的 JsonSerializer 无法序列化 Field ?

新装的my eclipse 中为啥没有src源文件,这样我怎么才能建立源文件呢?

asp.net 建 ashx的时候为啥没有 ashx.cs 后台文件

为啥 16 字节是 C# 中 struct 的推荐大小?

为啥设置了pageX和pageY创建的提示框不会随着鼠标移动

用IntelliJ IDEA建maven项目,无法再main下建java文件了无法new class,为啥