Beispiel #1
0
        private static Expression GetMemberExpression(
            MemberInfo member,
            RegistrationContext registrationContext,
            ResolutionContext resolutionContext)
        {
            var memberTypeInfo = member.AsTypeInformation(registrationContext,
                                                          resolutionContext.CurrentContainerContext.ContainerConfiguration);

            var injectionParameter = registrationContext.InjectionParameters.SelectInjectionParameterOrDefault(memberTypeInfo);

            if (injectionParameter != null)
            {
                return(injectionParameter);
            }

            var memberExpression = resolutionContext.CurrentContainerContext
                                   .ResolutionStrategy.BuildExpressionForType(resolutionContext, memberTypeInfo);

            if (memberExpression != null || resolutionContext.NullResultAllowed)
            {
                return(memberExpression);
            }

            var memberType = member is PropertyInfo ? "property" : "field";

            throw new ResolutionFailedException(memberTypeInfo.ParentType, memberTypeInfo.DependencyName,
                                                $"Unresolvable {memberType}: ({memberTypeInfo.Type.FullName}){memberTypeInfo.ParameterOrMemberName}.");
        }