System.Dynamic.CreateInstanceBinder.FallbackCreateInstance C# (CSharp) Метод

FallbackCreateInstance() публичный абстрактный Метод

When overridden in the derived class, performs the binding of the dynamic create operation if the target dynamic object cannot bind.
public abstract FallbackCreateInstance ( DynamicMetaObject target, DynamicMetaObject args, DynamicMetaObject errorSuggestion ) : DynamicMetaObject
target DynamicMetaObject The target of the dynamic create operation.
args DynamicMetaObject The arguments of the dynamic create operation.
errorSuggestion DynamicMetaObject The binding result to use if binding fails, or null.
Результат DynamicMetaObject
        public abstract DynamicMetaObject FallbackCreateInstance(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion);

Same methods

CreateInstanceBinder::FallbackCreateInstance ( DynamicMetaObject target, DynamicMetaObject args ) : DynamicMetaObject

Usage Example

Пример #1
0
        public override DynamicMetaObject BindCreateInstance(CreateInstanceBinder binder, DynamicMetaObject[] args)
        {
            var constructors = ReflType.GetConstructors();
            var ctors = constructors.Where(c => c.GetParameters().Length == args.Length);
            var res = new List<ConstructorInfo>();

            foreach (var c in ctors)
            {
                if (RuntimeHelpers.ParametersMatchArguments(c.GetParameters(), args))
                {
                    res.Add(c);
                }
            }
            if (res.Count == 0)
            {
                // Binders won't know what to do with TypeModels, so pass the
                // RuntimeType they represent.  The binder might not be Sympl's.
                return binder.FallbackCreateInstance(
                    RuntimeHelpers.GetRuntimeTypeMoFromModel(this),
                    args);
            }
            // For create instance of a TypeModel, we can create a instance
            // restriction on the MO, hence the true arg.
            var restrictions = RuntimeHelpers.GetTargetArgsRestrictions(this, args, true);
            var ctorArgs = RuntimeHelpers.ConvertArguments(args, res[0].GetParameters());
            return new DynamicMetaObject(
                // Creating an object, so don't need EnsureObjectResult.
                Expression.New(res[0], ctorArgs),
                restrictions);
        }
All Usage Examples Of System.Dynamic.CreateInstanceBinder::FallbackCreateInstance