当我试图通过构造函数给一个变量赋值给另一个类DataContext的对象时,它始终为null,我得到一个NullReferenceException。当我通过set accessor尝试这一切时,一切正常。
public class DataRepository
{
private DataContext data;
private AnyFiller currentFiller;
public AnyFiller CurrentFiller
{
get
{
return currentFiller;
}
set
{
this.currentFiller = value;
}
}
public DataContext Data { get; set; }
public DataRepository()
{
this.data = new DataContext();
}
public DataRepository(DataContext data)
{
this.data = data;
}
任何一个构造函数都不能正常工作,但正如我之前所说,当我做这样的事情时,它正在工作:
DataContext cont = new DataContext();
DataRepository data = new DataRepository();
data.Data = cont;
有人能告诉我我做错了什么吗?
答案 0 :(得分:2)
在你的两个构造函数中,你都在设置'您的私人字段'数据'。但是那时你会试着去找'您的属性'数据',它是使用自动属性快捷方式实现的。
您需要更改构造函数以设置属性'数据'而不是私人领域'数据'。
public DataRepository()
{
this.Data = new DataContext();
}
public DataRepository(DataContext data)
{
this.Data = data;
}
你可以摆脱私人领域的数据'因为它与您的财产无关'数据'一点都不如果您希望将您的媒体资源明确地与您的私人字段“数据”相关联,你需要这样做:
public DataContext Data { get { return data; } set { data = value; } }