public object[] ResolveArgs( PolicyMethodBinding binding, object callback, IHandler handler) { return(_args.Take(binding.Dispatcher.Parameters.Length) .Select(arg => arg.Resolve(callback, binding, handler)) .ToArray()); }
public override void Configure(PolicyMethodBinding binding) { if (!binding.Dispatcher.IsVoid) { Rule.Configure(binding); } }
private static void InferVariance(PolicyMethodBinding method) { var restrict = method.Attribute.Key as Type; if (restrict != null) { if (method.VarianceType == null) { method.VarianceType = restrict; } } }
protected static void InferVariance(PolicyMethodBinding method) { var key = method.Attribute.Key; var restrict = key as Type; if (restrict != null) { if (method.VarianceType == null || method.VarianceType.IsAssignableFrom(restrict)) { method.VarianceType = restrict; } } }
public override void Configure(PolicyMethodBinding binding) { base.Configure(binding); var returnType = binding.Dispatcher.LogicalReturnType; if (returnType.IsArray) { returnType = returnType.GetElementType(); } if (returnType == typeof(object)) { return; } binding.VarianceType = returnType; }
public override void Configure( ParameterInfo parameter, PolicyMethodBinding binding) { base.Configure(parameter, binding); var paramType = parameter.ParameterType; if (paramType.IsGenericParameter) { var contraints = paramType.GetGenericParameterConstraints(); paramType = contraints.Length == 1 ? contraints[0] : typeof(object); } if (paramType == typeof(object)) { return; } binding.CallbackIndex = parameter.Position; binding.VarianceType = paramType; }
public void Insert(PolicyMethodBinding method) { var key = method.GetKey(); if (key == null) { var unknown = _unknown ?? (_unknown = new List <PolicyMethodBinding>()); unknown.Add(method); return; } var indexed = _indexed ?? (_indexed = new Dictionary <object, List <PolicyMethodBinding> >()); List <PolicyMethodBinding> methods; if (!indexed.TryGetValue(key, out methods)) { methods = new List <PolicyMethodBinding>(); indexed.Add(key, methods); } methods.Add(method); }
public override object Resolve( object callback, PolicyMethodBinding binding, IHandler composer) { return(callback is Cb?_target((Cb)callback) : callback); }
public override object Resolve( object callback, PolicyMethodBinding binding, IHandler composer) { return(_extract((Cb)callback)); }
public override void Configure(PolicyMethodBinding binding) { Rule.Configure(binding); }
public virtual void Configure(PolicyMethodBinding binding) { }
public override object Resolve( object callback, PolicyMethodBinding binding, IHandler composer) { return(Argument.Resolve(callback, binding, composer)); }
public override void Configure( ParameterInfo parameter, PolicyMethodBinding binding) { Argument.Configure(parameter, binding); }
public abstract object Resolve( object callback, PolicyMethodBinding binding, IHandler composer);
public virtual void Configure( ParameterInfo parameter, PolicyMethodBinding binding) { }
public override object Resolve( object callback, PolicyMethodBinding binding, IHandler composer) { return(binding); }