2015-09-18 5 views
0

В чем разница между этими двумя фрагментами кода. Я хочу знать, почему он использует весь этот код во втором фрагменте, в то время как он мог просто использовать простой новый для создания экземпляра DataTable;В чем заключается полезность использования метода Activator.CreateInstance

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); 
    } 
} 
+0

Что это связано с Activator.CreateInstance? –

+0

А что с UML ?? –

+0

жаль, что я не дал больше деталей –

ответ

0

Второй должен быть очень ясным для вас. Он создает экземпляр типа DataTable.

Первый также делает то же самое, но с использованием компонента ObjectBuilder. Это структура, используемая для создания систем инъекций зависимостей. Он использует конвейер стратегий, который позволяет вам настроить процесс создания (и уничтожения). Например, вы можете автоматически присваивать значения свойствам и полям или принимать различные действия на основе атрибутов, объявленных для членов. См. Design of ObjectBuilder для более подробной информации.

Смежные вопросы