如何使用C#中的私有构造函数实例化一个对象?

我绝对记得在某个地方看到一个使用反射或某事做这个例子。这是与用户无法创建的SqlParameterCollection有关(如果我没有被误认为)。不幸的是找不到它了。

任何人都可以在这里分享这个招数?不是我认为这是开发中的有效方法,我对这样做的可能性感兴趣。

// the types of the constructor parameters, in order
// use an empty Type[] array if the constructor takes no parameters
Type[] paramTypes = new Type[] { typeof(string), typeof(int) };

// the values of the constructor parameters, in order
// use an empty object[] array if the constructor takes no parameters
object[] paramValues = new object[] { "test", 42 };

TheTypeYouWantToInstantiate instance =
    Construct<TheTypeYouWantToInstantiate>(paramTypes, paramValues);

// ...

public static T Construct<T>(Type[] paramTypes, object[] paramValues)
{
    Type t = typeof(T);

    ConstructorInfo ci = t.GetConstructor(
        BindingFlags.Instance | BindingFlags.NonPublic,
        null, paramTypes, null);

    return (T)ci.Invoke(paramValues);
}
翻译自:https://stackoverflow.com/questions/708952/how-to-instantiate-an-object-with-a-private-constructor-in-c

转载注明原文:如何使用C#中的私有构造函数实例化一个对象?