使用 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。
这两段代码有什么区别。 我想知道为什么他在第二个代码段中使用了那么多代码,而他可以只使用简单的 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。