コード例 #1
0
        public Task <IBinding> TryCreateAsync(BindingProviderContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var parameter = context.Parameter;
            var typeUser  = parameter.ParameterType;

            if (typeUser.IsByRef)
            {
                return(Task.FromResult <IBinding>(null));
            }

            var type    = typeof(ExactBinding <>).MakeGenericType(typeof(TAttribute), typeof(TType), typeUser);
            var method  = type.GetMethod("TryBuild", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
            var binding = BindingFactoryHelpers.MethodInvoke <IBinding>(method, this, context);

            return(Task.FromResult <IBinding>(binding));
        }
コード例 #2
0
        public Task <IBinding> TryCreateAsync(BindingProviderContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var parameter = context.Parameter;
            var typeUser  = parameter.ParameterType;

            if (typeUser.IsByRef)
            {
                typeUser = typeUser.GetElementType(); // Can't generic instantiate a ByRef.
            }

            var type   = typeof(StreamBinding);
            var method = type.GetMethod("TryBuild", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);

            method = method.MakeGenericMethod(typeUser);
            var binding = BindingFactoryHelpers.MethodInvoke <IBinding>(method, this, context);

            return(Task.FromResult <IBinding>(binding));
        }