抽象ジェネリック コレクション クラスの派生インスタンスを作成するファクトリ メソッドを作成しようとしています。ここに基本クラスがあります...
abstract class ItemBase { }
abstract class CollectionBase<T> : Collection<T> where T : ItemBase, new() { }
...およびその派生クラス ...
class Item : ItemBase { }
class ItemCollection : CollectionBase<Item> {}
ここで、ItemCollection を作成するファクトリ メソッドが必要です。ただし、派生クラス Item および ItemCollection は、このファクトリ メソッドを含むクラスには認識されないことに注意してください。これは私がそれがあるべきだと私が想像する方法です...
static T CreateItemCollection<T>() where T : CollectionBase<ItemBase>, new()
{
return new T();
}
...そして、私はそれをこのように呼び出すことを想像します...
var collection = CreateItemCollection<ItemCollection>();
ただし、ItemBase にはパラメーターのないコンストラクターが必要なため、ファクトリ メソッドはコンパイルされません。そして、呼び出しは、ItemCollection
が から派生したものであると信じることを拒否しますCollectionBase<ItemBase>
。
誰かが私を正しい方向に向けることができますか? ありがとう。