Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 什么';这是使用Activator.CreateInstance方法的实用程序_.net_C# 4.0_Design Patterns - Fatal编程技术网

.net 什么';这是使用Activator.CreateInstance方法的实用程序

.net 什么';这是使用Activator.CreateInstance方法的实用程序,.net,c#-4.0,design-patterns,.net,C# 4.0,Design Patterns,这两段代码之间的区别是什么。 我想知道为什么他在第二个代码段中使用了那么多代码,而他可以使用simple new创建DataTable的实例 1) var dt = new DataTable(); 2) var dt = ObjectBuilder.Instance<DataTable>(); 1)var dt=new DataTable(); 2) var dt=ObjectBuilder.Instance(); 公共类ObjectBuilder { #区域对象生成器成员

这两段代码之间的区别是什么。 我想知道为什么他在第二个代码段中使用了那么多代码,而他可以使用simple new创建DataTable的实例

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

公共类ObjectBuilder
{
#区域对象生成器成员
/// 
///实例这个实例。
/// 
/// 
/// 
公共静态T实例(),其中T:class
{
返回Activator.CreateInstance();
}
/// 
///实例指定的参数。
/// 
/// 
///争论。
/// 
公共静态T实例(参数对象[]参数),其中T:class
{
return(T)Activator.CreateInstance(typeof(T),参数);
}
}

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


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

这和Activator.CreateInstance有什么关系?对不起,我没有提供更多细节
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);
    }
}