我有一段看起来像这样的代码:
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 }));
任何人都可以提出一种更优雅的方式来做到这一点吗?