У меня есть кусок кода, который выглядит следующим образом:
public static T CreateSomething<T>(SomeType a) where T : SomeMicrosoftBaseClass, new()
{
var newElement = new T { SomeProperty = a};
DoStuff();
return newElement;
}
и теперь мне нужно изменить код, чтобы я мог передать конструктору SomeMicrosoftBaseClass логический аргумент - который я могу установить только при конструировании.
, так как для ограничения "new ()" требуется открытый конструктор без параметров, и поскольку я не мог использовать интерфейс или изменять SomeMicrosoftBaseClass, я использую отражение следующим образом:
var newElement = (T) (typeof (T).GetConstructor(new Type[] { typeof(SomeType) }).Invoke(new object[] { a }));
Кто-нибудь может предложить более элегантный способ сделать это?