将实例的值用作所有其他类的只读

时间:2015-07-06 19:35:25

标签: c#

我将来自数据库的值存储在LoadData类

中的实例变量中
public class LoadData
{
    public  string _projectName;

    public void GetProjectName()
    {
         //Retrieving data from db

        _projectName= dt.Rows[0]["projectname"].ToString();
    }
}

现在,我希望每次稍后调用不同的ViewModel时都将此字符串值用作readonly。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以将值标记为静态,允许任何内容访问它。您还可以应用readonly关键字,以防止在从数据库中为其分配初始值后覆盖该值。

public class LoadData
{
    public static readonly  string _projectName;

    public void GetProjectName()
    {
         //Retrieving data from db
        _projectName= dt.Rows[0]["projectname"].ToString();
    }
}

我会把它包装在一个属性中,而不是像你那样暴露一个字段。

public class LoadData
{
    private static readonly  string _projectName;
    public string ProjectName
    {
        get { return LoadData._projectName; }
    }

    public void GetProjectName()
    {
         //Retrieving data from db
        _projectName= dt.Rows[0]["projectname"].ToString();
    }
}

这允许您将静态成员保密,以便不会看到它。现在,每次创建新的LoadData实例时,您都可以访问ProjectName并获得第一次获取的值。

我个人使用静态字段来缓存数据;我尝试不依赖静态字段作为类的公共成员。在这种情况下,由于它充当缓存,因此最好将其公开为返回只读静态缓存的实例属性。将其设置为静态可确保在LoadData类的每个实例之间共享值。