2

私は2つのクラスと次のようなメソッドを持っています:

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ですか?

4

6 に答える 6

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";
于 2013-01-23T19:23:46.733 に答える
4

使用するときClass2.は、クラスのインスタンスではなく、クラス自体を参照しているためです。

次のように宣言するClass2static、場合によってはそのインスタンスを作成する必要があります。

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", Param3 = "other" }
    };
}
于 2013-01-23T19:24:58.197 に答える
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 = ...
        }
    };
}
于 2013-01-23T19:25:09.007 に答える
0

次のようなことを行う必要があります。

Class2 = new Class2() { ...}
于 2013-01-23T19:25:00.630 に答える
0

デイブは正しいです。コードでこれを行う最も簡単な方法は次のとおりです

private Class1 GetData(SqlDataReader reader)
{
    var model = new Class1
    {
        Id = Convert.ToInt32(reader["ID"]),
        Name = reader["Name"].ToString(),
        Params = new Class2()
     };
 }
于 2013-01-23T19:25:31.533 に答える
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" }
    };
}
于 2013-01-23T19:25:56.930 に答える