如何在VB.NET中创建“Write Once Read Many”属性?

时间:2010-01-12 15:16:48

标签: vb.net properties set readonly

制作类属性“一次写入,多次读取”的最佳方法是什么,这样您只能设置一次属性?

我知道我可以传递构造函数中的所有属性并使它们成为ReadOnly,但是在具有大量属性的情况下,我不希望构造函数具有20多个参数。

另外,我意识到我可以“滚动自己的”设置器,但必须为每个属性执行此操作似乎是一堆冗余编码。

在VB 2008 .NET 3.5中有没有一种干净的方法?

3 个答案:

答案 0 :(得分:2)

一次写入属性永远不会“干净”。

我建议创建一个构建器/工厂类来避免使用20个参数CTor。 (是的,我知道这有点打字)

此处类似的讨论: Should I use set once variables?

[编辑]此外,即使你坚持我没有看到另一个选择,而不是滚动你自己的制定者,这也是很多打字。

答案 1 :(得分:2)

我知道已经差不多3年了,但这是我认为更好的解决方案:

public class Site
{
    private int miID;

    public Site(int iNewID, string sName)
    {
        miID = iNewID;
        Name = sName;
    }
    // The ID property can only be set once in the constructor
    public int ID
    {
        get { return miID; }
    }
    public string Name { get; set; }
}

答案 2 :(得分:0)

“最干净”的方式根本就是不要这样做并使用自动属性。我也没有看到它的必要性。它们只能写一次真的那么重要吗?如果是这样,我肯定会使用一个构造函数,它将所有属性的值作为参数。