我绝对记得在某个地方看到过使用反射或其他方式这样做的例子。它与 SqlParameterCollection
有关,用户无法创建(如果我没记错的话)。不幸的是再也找不到了。
有人可以在这里分享这个技巧吗?并不是说我认为这是一种有效的开发方法,我只是对这样做的可能性非常感兴趣。
最佳答案
您可以使用 Activator.CreateInstance 的重载之一来执行此操作:Activator.CreateInstance(Type type, bool nonPublic)
为 nonPublic
参数使用 true
。因为 true
匹配公共(public)或非公共(public)默认构造函数;并且 false
仅匹配公共(public)默认构造函数。
例如:
class Program
{
public static void Main(string[] args)
{
Type type=typeof(Foo);
Foo f=(Foo)Activator.CreateInstance(type,true);
}
}
class Foo
{
private Foo()
{
}
}
关于c# - 如何在 C# 中使用私有(private)构造函数实例化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/708952/