4.6.1 | Activators Dotnet

When a factory must decide at runtime which concrete class to instantiate based on a string or configuration value.


public static ObjectActivator CreateActivator(ConstructorInfo ctor)
var paramExpr = Expression.Parameter(typeof(object[]), "args");
    var argExprs = ctor.GetParameters().Select((p, i) =>
        Expression.Convert(Expression.ArrayIndex(paramExpr, Expression.Constant(i)), p.ParameterType));
    var newExpr = Expression.New(ctor, argExprs);
    var lambda = Expression.Lambda<Func<object[], object>>(newExpr, paramExpr);
    return lambda.Compile();

EF 6, compatible with .NET 4.6.1, used dynamic proxies created via Activator for lazy loading. activators dotnet 4.6.1

Early DI frameworks or custom containers used Activator.CreateInstance to resolve services dynamically. When a factory must decide at runtime which