C# 4.0 .NET 4.5 Silverlight 5 解決策が見つからないのは奇妙に思えるので、助けが必要です。
基本クラス Base と派生クラス Child : Base があります。T : EntityObject である EF エンティティ ヘルパーの特定の作業を行うためのジェネリック型を持つヘルパー クラスもあります。
子は、特定のエンティティ MyEntity : EntityObject で特定の作業を行います。
だから私は試しました:
public class Base
{
protected Helper<EntityObject> helper;
}
public class Child : Base
{
public Child()
{
helper = new Helper<MyEntity>();
}
}
より派生したクラスは、より具体的なジェネリックパラメーターについて知っている必要があると思いますが、それが共分散であると思います...しかし、それは機能しません...
そのようなクラスを設計する「正しい」方法は何ですか?
編集:申し訳ありませんが、必要なものを達成できない理由を100%明確にしませんでした。
を。Baseのユーザーは T 型を知らないため、一般的な Base を使用したソリューションは機能しません。想像:
public class User
{
private Base<T> base; // this will not compile.
public User(TypeEnum t)
{
if(t == TypeEnum.MyEntity) base = new Child();
...
b. ヘルパーはどこでも T を使用するため、インターフェイスを使用したソリューションは機能しません (それが目的ですよね?)。メソッドがあると想像してください
public IEnumerable<T> Process(IEnumerable<T> items) { return items; }
Tについて何も知らないインターフェースでそれを表示するにはどうすればよいですか