0

次の定義があります。

public class BaseEntity 
{
    ...
    public BaseEntity()
    {

    }
}

public class KeyValuePair
{
    public string key;
    public string value;
    public string meta;
}

public class KeyValuePairList : BaseEntity
{
    public List<KeyValuePair> List {set; get;}

    public KeyValuePairList(IEnumerable<KeyValuePair> list)
    {
        this.List = new List<KeyValuePair>();
        foreach (KeyValuePair k in list) {
            this.List.Add(k);
        }
    }
}

私はさらに10個の異なるクラスを持っておりKeyValuePairKeyValuePairListすべて同じ目的を達成しています.前者はオブジェクトを定義し、後者はこれらのオブジェクトを配置するリストを定義しています. BaseEntity個々のクラスでリストのインスタンス化ロジックを再定義する必要がないように、この機能を基本クラスに組み込むにはどうすればよいですか。つまり、コンストラクターに渡されるオブジェクトの種類に基づいてリストをインスタンス化できるようにしたいですか? 助言がありますか?

4

1 に答える 1

4

ジェネリックは使えますか?

public class BaseEntity<T> where T: class
{
    public List<T> List { set; get; }

    public BaseEntity(IEnumerable<T> list)
    {
        this.List = new List<T>();
        foreach (T k in list)
        {
            this.List.Add(k);
        }
    }
}

public class KeyValuePair
{
    public string key;
    public string value;
    public string meta;
}

public class KeyValuePairList : BaseEntity<KeyValuePair>
{
    public KeyValuePairList(IEnumerable<KeyValuePair> list) 
        : base(list) { }
}
于 2012-06-30T22:38:01.977 に答える