我有两个类和一个这样的方法:
public class Class1
{
public int Id { get; set; }
public string Name { get; set; }
public Class2 Params { get; set; }
}
public class Class2
{
public string Param1 { get; set; }
public string Param2 { get; set; }
public string Param3 { get; set; }
}
private Class1 GetData(SqlDataReader reader)
{
var model = new Class1
{
Id = Convert.ToInt32(reader["ID"]),
Name = reader["Name"].ToString(),
Class2.
};
}
为什么我看不到Class2
的属性?
答案 0 :(得分:4)
您需要创建instance
Class2
。 Params
Class1
var model = new Class1
{
Id = Convert.ToInt32(reader["ID"]),
Name = reader["Name"].ToString(),
};
model.Params = new Class2();
model.Params.Param1 = "param1";
对象需要初始化为:
{{1}}
答案 1 :(得分:2)
Class1没有名为Class2的属性。你在Class1上调用了“Class2”类型的属性,“Params”。所以你可以像:
一样引用它private Class1 GetData(SqlDataReader reader)
{
var model = new Class1
{
Id = Convert.ToInt32(reader["ID"]),
Name = reader["Name"].ToString(),
Params = new Class2 {
Param1 = ...
}
};
}
答案 2 :(得分:0)
你应该做像:
Class2 = new Class2() { ...}
答案 3 :(得分:0)
private Class1 GetData(SqlDataReader reader)
{
var model = new Class1
{
Id = Convert.ToInt32(reader["ID"]),
Name = reader["Name"].ToString(),
Params = new Class2()
};
}
答案 4 :(得分:0)
Class1的Params属性永远不会分配给任何东西,所以总是为null。
此外,Class1中的属性访问器是Params,因此它应该是......
private Class1 GetData(SqlDataReader reader)
{
var model = new Class1
{
Id = Convert.ToInt32(reader["ID"]),
Name = reader["Name"].ToString(),
Params = new Class2() { Param1 = "foo", Param2 = "bar" }
};
}