c# - 如何在 C# 中使用私有(private)构造函数实例化对象?

标签 c# constructor instantiation private-constructor

我绝对记得在某个地方看到过使用反射或其他方式这样做的例子。它与 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/

相关文章:

C++11 数组初始化不会调用复制构造函数

objective-c - 理解 Objective-C 中的实例化

C# 对象数组是否存储所述对象的指针?

c# - 避免来自 ASP.NET 中的 View 的双重请求的最佳实践

c# - XNA Content.Load() 内存使用

Java - 接口(interface),实例化一个接口(interface)?

java - 从 ColdFusion 调用 .jar

c# - 使用 linq 将字符串转换为 3D 数组

c++ - 初始化器列表 *argument* 评估顺序

c++ - 这两段代码有什么区别吗? (临时变量)