コード例 #1
0
        public Expression CreateInitialization(MutableType declaringType, Func <InitializationBodyContext, Expression> initializationProvider)
        {
            ArgumentUtility.CheckNotNull("declaringType", declaringType);
            ArgumentUtility.CheckNotNull("initializationProvider", initializationProvider);

            var context = new InitializationBodyContext(declaringType, isStatic: false, initializationSemantics: declaringType.Initialization.Semantics);

            return(ProviderUtility.GetNonNullValue(initializationProvider, context, "initializationProvider"));
        }
コード例 #2
0
        public void GetNonNullValue_ThrowsForNullReturningProvider()
        {
            Func <string, object> provider = ctx => null;

            Assert.That(
                () => ProviderUtility.GetNonNullValue(provider, "", "argumentName"),
                Throws.ArgumentException
                .With.ArgumentExceptionMessageEqualTo(
                    "Provider must not return null.", "argumentName"));
        }
コード例 #3
0
        public static Expression GetTypedBody <TContext> (Type expectedType, Func <TContext, Expression> bodyProvider, TContext context)
            where TContext : BodyContextBase
        {
            ArgumentUtility.CheckNotNull("expectedType", expectedType);
            ArgumentUtility.CheckNotNull("bodyProvider", bodyProvider);
            ArgumentUtility.CheckNotNull("context", context);

            var body = ProviderUtility.GetNonNullValue(bodyProvider, context, "bodyProvider");

            return(ExpressionTypeUtility.EnsureCorrectType(body, expectedType));
        }
コード例 #4
0
        public void GetNonNullValue()
        {
            var context = "hello";
            var value   = new object();
            Func <string, object> provider = ctx =>
            {
                Assert.That(ctx, Is.SameAs(context));
                return(value);
            };

            var result = ProviderUtility.GetNonNullValue(provider, context, providerArgumentName: "does not matter");

            Assert.That(result, Is.SameAs(value));
        }
コード例 #5
0
ファイル: MethodFactory.cs プロジェクト: re-motion/TypePipe
        private MethodSignatureItems GetMethodSignatureItems(
            MutableType declaringType,
            IEnumerable <GenericParameterDeclaration> genericParameters,
            Func <GenericParameterContext, Type> returnTypeProvider,
            Func <GenericParameterContext, IEnumerable <ParameterDeclaration> > parameterProvider)
        {
            var genericParameterDeclarations = genericParameters.ToList();
            var genericParams = genericParameterDeclarations
                                .Select((p, i) => new MutableGenericParameter(i, p.Name, declaringType.Namespace, p.Attributes)).ToList();

            var genericParameterContext = new GenericParameterContext(genericParams.Cast <Type>());

            foreach (var paraAndDecl in genericParams.Zip(genericParameterDeclarations, (p, d) => new { Parameter = p, Declaration = d }))
            {
                paraAndDecl.Parameter.SetGenericParameterConstraints(paraAndDecl.Declaration.ConstraintProvider(genericParameterContext));
            }

            var returnType = ProviderUtility.GetNonNullValue(returnTypeProvider, genericParameterContext, "returnTypeProvider");
            var parameters = ProviderUtility.GetNonNullValue(parameterProvider, genericParameterContext, "parameterProvider").ToList();

            return(new MethodSignatureItems(genericParams, returnType, parameters));
        }
コード例 #6
0
        public void GetNonNullValue_ThrowsForNullReturningProvider()
        {
            Func <string, object> provider = ctx => null;

            ProviderUtility.GetNonNullValue(provider, "", "argumentName");
        }