この質問が以前に聞かれたことは知っていますが、簡潔で明確な回答をまだ見ていないので、この質問が削除されないことを願っています。明確な回答が得られるでしょう。
私は現在 C# 5.0 で作業しています。.NET 4.5; VS 2012. C# で多くのことを行ってきましたが、私は主に Delphi の男です。
Delphi では、次の種類の設計を使用する何百ものクラス ファクトリを作成しました (ここでは非常に単純化されています)。
unit uFactory;
interface
type
TClassofMyClass = class of TMyClass;
TFactoryDict = TDictionary<TMyEnum, TClassofMyClass>;
var fDict:TFactoryDict;
implementation
procedure initDict;
begin
fDict:=TFactoryDict.create;
fDict.add(myEnum1, TMyClass1);
fDict.add(myEnum2, TMyClass2);
fDict.add(myEnum3, TMyClass3);
end;
function Factory(const aEnum: TMyEnum): TMyClass;
var
ClassofMyClass: TClassofMyClass;
begin
if fDict.TryGetValue(aEnum, ClassofMyClass) then
result := ClassofMyClass.Create(aParam);
end;
end.
今: C# でこのようなことを行うにはどうすればよいですか?! C#には' class of ' 型がないようです。何か不足していますか?このタイプのクラス ファクトリを C# で簡単かつエレガントに実装するにはどうすればよいですか? この設計は Python でも実装できます。なぜ C# の方が悪いのでしょうか?!