什么是使用Activator.CreateInstance方法的实用程序

时间:2015-09-18 11:44:38

标签: .net c#-4.0 design-patterns

这两段代码之间的区别是什么。 我想知道为什么他在第二个片段中使用了所有大量的代码,而他可以使用simple 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);
    }
}

1 个答案:

答案 0 :(得分:0)

第二个应该非常清楚。它会创建DataTable类型的实例。

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