使用 Activator.CreateInstance 方法有什么用

what's the utility of using Activator.CreateInstance method

这两段代码有什么区别。 我想知道为什么他在第二个代码段中使用了那么多代码,而他可以只使用简单的 new 来创建 DataTable 的实例;

1) var dt = new DataTable();
2) var dt = ObjectBuilder.Instance<DataTable>();

.

public class ObjectBuilder
{
    #region ObjectBuilder Members

    /// <summary>
    /// Instances this instance.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <returns></returns>
    public static T Instance<T>() where T : class
    {
        return Activator.CreateInstance<T>();
    }

    /// <summary>
    /// Instances the specified arguments.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="arguments">The arguments.</param>
    /// <returns></returns>
    public static T Instance<T>(params object[] arguments) where T : class
    {
        return (T)Activator.CreateInstance(typeof(T), arguments);
    }
}

第二个你应该很清楚了。它创建了一个 DataTable 类型的实例。

第一个也做同样的事情,但使用 ObjectBuilder 组件。这是一个用于创建依赖注入系统的框架。它使用一系列策略,允许您自定义创建(和销毁)过程。例如,您可以自动为属性和字段赋值,或根据成员声明的属性采取各种行动。有关详细信息,请参阅 Design of ObjectBuilder