次のクラスがあるとします。
public class BaseConfig
{
}
public class SpecialConfig : BaseConfig
{
}
次に、これらを含むジェネリック クラス定義があります。
public class ConfigList<T> : ObservableCollection<T> where T : BaseConfig
{
}
次に、ConfigList オブジェクトのコレクションが必要な別のクラスがあります。
public class ConfigurationManager
{
private ObservableCollection<ConfigList<BaseConfig>> _configItems
public ConfigurationManager()
{
_configItems = new ObservableCollection<ConfigList<BaseConfig>>();
}
public void AddConfigList(ConfigList<BaseConfig> configList)
{
_configItems.Add(configList);
}
}
次に、アプリケーションコードの他の場所にこれがあります:
ConfigurationManager _manager = new ConfigurationManager();
ConfigList<SpecialConfig> _configuration = new ConfigList<SpecialConfig>();
奇妙な理由で、C# では継承により次のことが許可されると思っていましたが、そうではありません。私が知りたいのは、以下で行っているように、ジェネリック型のクラスのコレクションにオブジェクトを追加する方法です (これは確かに人々が遭遇する一般的な問題であり、これを達成するための簡単なパターン/ソリューションがあります):
_manager.AddConfigList(_configuration);