В Delphi, когда я хочу создать object
из неопределенного полученного class
, я использовал class of
заявление;Есть ли способ инициализировать объект из ссылочного класса в C#?
TShape = class
public
procedure Draw;
end;
TCircle = class(TShape)
public
procedure Draw;
end;
TShapeClassRef = class of TShape;
и я создавал объект как;
var
ref:TShapeClassRef;
drawing:TShape;
begin
ref:=TCircle;
drawing:=ref.Create;
drawing.draw; //this is a circle object, and it draws circle
end;
Я не мог найти ничего подобного в C#.
Вы ищете что-то вроде 'Activator .CreateInstance (yourTypeGoesHere) '? – derape
C# не имеет метаклассов. Так что нет прямого аналога. Да, вы можете использовать отражение, но мне это действительно не нравится. Я лично считаю, что лучший способ - это то, что я написал в ответ на связанный обман: * И еще одним вариантом является замена словаря классов на словарь делегатов, которые возвращают новый экземпляр вашего объекта. С синтаксисом лямбда этот параметр дает очень чистый код. * –