/// <summary> /// Get an activation expression for this strategy /// </summary> /// <param name="scope"></param> /// <param name="request"></param> /// <returns></returns> public override IActivationExpressionResult GetActivationExpression(IInjectionScope scope, IActivationExpressionRequest request) { var requestType = request.ActivationType.GetTypeInfo().GenericTypeArguments[0]; var constructor = request.ActivationType.GetTypeInfo().DeclaredConstructors.First(); var newRequest = request.NewRequest(requestType, this, request.ActivationType, RequestType.Other, null, true); var strategy = request.GetWrappedExportStrategy(); if (strategy == null) { throw new Exception("Could not find export stragegy to get metadata from"); } var expressionResult = request.Services.ExpressionBuilder.GetActivationExpression(scope, newRequest); var newExpression = Expression.New(constructor, expressionResult.Expression, Expression.Constant(strategy.Metadata)); var newResult = request.Services.Compiler.CreateNewResult(request, newExpression); newResult.AddExpressionResult(expressionResult); return(newResult); }