我知道以前有人问过这个问题,但我还没有看到一个简短而明确的答案,所以我希望他们不会删除这个问题,我现在会得到一个明确的答案:
我目前正在使用 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# 中没有“类”类型。我错过了什么吗?如何在 C# 中简单优雅地实现这种类型的类工厂?这种设计也可以在 Python 中实现——为什么 C# 会更糟?!