Я знаю, что этот вопрос был задан раньше, но я еще должен увидеть короткий, ясный ответ, поэтому я надеюсь, что они не удалят этот вопрос, и теперь я получу четкий ответ:
В настоящее время я работаю в С# 5.0;.NET 4.5; VS 2012. Я в основном парень из 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.
Теперь: КАК я делаю что-то подобное в С#?! Кажется, в С# есть класс НЕТ. Я что-то упускаю? Как я могу реализовать этот тип класса factory просто и элегантно в С#? Этот дизайн может быть реализован и на Python - почему С# будет хуже?!