类的属性

时间:2013-01-23 19:22:56

标签: c#

我有两个类和一个这样的方法:

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的属性?

5 个答案:

答案 0 :(得分:4)

您需要创建instance Class2Params 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" }
    };
}