В зависимости от вашей ситуации вы также можете использовать ограничение общего типа:
public void DoSomethingWith<T>(T myObject) where T:new() {...}
Приведенное выше объявление метода ограничит тип параметра любым объектом, экземпляр которого можно создать с помощью конструктора без параметров.Преимущество здесь в том, что компилятор поймает любую попытку использовать метод с классом, у которого нет конструктора без параметров, поэтому, пока тип известен SOMEWHERE во время компиляции, это будет работать и будет предупреждать вас опроблема ранее.
Конечно, если тип действительно известен только во время выполнения (т. е. вы используете Activator.CreateInstance () для создания экземпляра объекта на основе строки или составного типа), тогда это не поможетвы.Я обычно использую отражение в качестве абсолютного последнего варианта, потому что как только вы перейдете на динамическую землю, вам в значительной степени придется остаться на динамической земле;обычно сложно или даже сложнее динамически создать что-то, а затем начать работать со статически.