Вообще говоря, у меня складывается впечатление, что NAnt предлагает большую гибкость по сравнению с MSBuild, тогда как (с моими относительно простыми потребностями) я до сих пор был в порядке с последним.
Если ваша сборка находится в GAC или bin, используйте имя сборки в конце имени типа вместо Assembly.Load ( )
.
object obj = Activator.CreateInstance(Type.GetType("DALL.LoadClass, DALL", true));
Вы должны использовать динамический метод с для улучшения. он быстрее, чем отражение ..
Вот пример кода для создания объекта с использованием динамического метода ..
public class ObjectCreateMethod
{
delegate object MethodInvoker();
MethodInvoker methodHandler = null;
public ObjectCreateMethod(Type type)
{
CreateMethod(type.GetConstructor(Type.EmptyTypes));
}
public ObjectCreateMethod(ConstructorInfo target)
{
CreateMethod(target);
}
void CreateMethod(ConstructorInfo target)
{
DynamicMethod dynamic = new DynamicMethod(string.Empty,
typeof(object),
new Type[0],
target.DeclaringType);
ILGenerator il = dynamic.GetILGenerator();
il.DeclareLocal(target.DeclaringType);
il.Emit(OpCodes.Newobj, target);
il.Emit(OpCodes.Stloc_0);
il.Emit(OpCodes.Ldloc_0);
il.Emit(OpCodes.Ret);
methodHandler = (MethodInvoker)dynamic.CreateDelegate(typeof(MethodInvoker));
}
public object CreateInstance()
{
return methodHandler();
}
}
//Use Above class for Object Creation.
ObjectCreateMethod inv = new ObjectCreateMethod(type); //Specify Type
Object obj= inv.CreateInstance();
Этот метод занимает всего 1/10 времени, необходимого для Activator.