专注微软开发平台
深入研究.NET框架

在.NET中不通过构造函数创建对象

使用new创建对象

在实际开发中,我们最常见的莫过于通过new关键字调用构造函数来创建类的一个对象,一般的写法如下:

SqlConnectionStringBuilder sqlConnectionStringBuilder = new SqlConnectionStringBuilder();

使用反射创建对象

我们也可以通过.NET提供的反射机制来创建一个对象,反射系统仍然需要调用类的构造函数才能创建对象,示例代码:

object obj = Activator.CreateInstance(typeof(SqlConnectionStringBuilder));
SqlConnectionStringBuilder sqlConnectionStringBuilder = (SqlConnectionStringBuilder)obj;

当然,反射有很多种方法,上面只给出了非常简单的反射,你虽然可以选择各种反射来创建对象,但你仍无法避免构造函数的调用。

不用通过构造函数对象创建对象

无论是通过何种方式来反射,还是使用new关键字,都避免不了调用构造函数,你能调用下面的HelloWorld方法吗?

public class TestClass
{
    public TestClass()
    {
        throw new InvalidOperationException();
    }

    public string HelloWorld()
    {
        return "Hello World!";
    }
}

如果你没有给出答案,不妨试试下面的示例代码,它创建并使用对象,但不会调用构造函数:

TestClass test = (TestClass)System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeof(TestClass));
test.HelloWorld();
关注零度编程

评论 抢沙发

深入学习 ASP.NET Core 视频教程

在线观看我要报名