使用where子句+新约束与args?

时间:2009-12-01 08:30:58

标签: c# .net where-clause

我有一段看起来像这样的代码:

    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 }));

任何人都可以建议一种更优雅的方式吗?

1 个答案:

答案 0 :(得分:2)

也许您可以使用Activator.CreateInstance

var newElement = (T)Activator.CreateInstance(typeof(T),a);