C# Class Archetype.MetaObjects.DelegatingMetaObject

Inheritance: System.Dynamic.DynamicMetaObject
显示文件 Open project: idavis/Archetype

Public Methods

Method Description
BindBinaryOperation ( BinaryOperationBinder binder, DynamicMetaObject arg ) : DynamicMetaObject

Performs the binding of the dynamic binary operation.

BindConvert ( ConvertBinder binder ) : DynamicMetaObject

Performs the binding of the dynamic conversion operation.

BindCreateInstance ( CreateInstanceBinder binder, DynamicMetaObject args ) : DynamicMetaObject

Performs the binding of the dynamic create instance operation.

BindDeleteIndex ( DeleteIndexBinder binder, DynamicMetaObject indexes ) : DynamicMetaObject

Performs the binding of the dynamic delete index operation.

BindDeleteMember ( DeleteMemberBinder binder ) : DynamicMetaObject

Performs the binding of the dynamic delete member operation.

BindGetIndex ( GetIndexBinder binder, DynamicMetaObject indexes ) : DynamicMetaObject

Performs the binding of the dynamic get index operation.

BindGetMember ( GetMemberBinder binder ) : DynamicMetaObject

Performs the binding of the dynamic get member operation.

BindInvoke ( InvokeBinder binder, DynamicMetaObject args ) : DynamicMetaObject

Performs the binding of the dynamic invoke operation.

BindInvokeMember ( InvokeMemberBinder binder, DynamicMetaObject args ) : DynamicMetaObject

Performs the binding of the dynamic invoke member operation.

BindSetIndex ( SetIndexBinder binder, DynamicMetaObject indexes, DynamicMetaObject value ) : DynamicMetaObject

Performs the binding of the dynamic set index operation.

BindSetMember ( SetMemberBinder binder, DynamicMetaObject value ) : DynamicMetaObject

Performs the binding of the dynamic set member operation.

BindUnaryOperation ( UnaryOperationBinder binder ) : DynamicMetaObject

Performs the binding of the dynamic unary operation.

Protected Methods

Method Description
ApplyBinding ( DynamicMetaObject>.Func bindTarget, Func bindFallback ) : DynamicMetaObject

Binds the dynamic operation to the base meta object and attaches the fallback error suggestion if it can be bound.

AreEquivalent ( Type lhs, Type rhs ) : bool
BindingHasFailed ( DynamicMetaObject metaObject ) : bool
CreateBoundDynamicMetaObject ( DynamicMetaObject>.Func bindTarget, object target ) : DynamicMetaObject

Performs the binding of the dynamic operation and relaxes the type restrictions for the target of the delegation.

When bindings are evaluated, they are restricted to the type being operated upon. In order to support delegation to other types, we have to relax the type restrictions on the DynamicMetaObject.

DelegatingMetaObject ( Expression expression, object value, DynamicMetaObject baseMetaObject ) : System

Initializes a new instance of the DelegatingMetaObject class.

GetLimitedSelf ( ) : Expression
GetTypeRestriction ( ) : BindingRestrictions

Gets the type restrictions for the current target DynamicMetaObject.Value and Expression.

RelaxTypeRestrictions ( DynamicMetaObject result, object target ) : DynamicMetaObject

Relaxes the type restrictions for the current T:System.Dynamic.DynamicMetaObject based on the new delegation target.

Resolve ( DynamicMetaObject>.Func bindTarget ) : DynamicMetaObject

Implemented by inheritors, this function should determine the receiver for the binding of the dynamic operation and use the bindTarget to perform the binding and return the result of that binding operation.

The bindTarget can be used multiple times to attempt potential binding operations.

Method Details

ApplyBinding() protected method

Binds the dynamic operation to the base meta object and attaches the fallback error suggestion if it can be bound.
protected ApplyBinding ( DynamicMetaObject>.Func bindTarget, Func bindFallback ) : DynamicMetaObject
bindTarget DynamicMetaObject>.Func /// Performs the binding of the dynamic operation if the target dynamic object cannot bind. /// The target of the dynamic operation.
bindFallback Func /// Performs the binding of the dynamic set member operation if the target dynamic object cannot bind. /// The target of the dynamic set member operation.
return System.Dynamic.DynamicMetaObject

AreEquivalent() protected method

protected AreEquivalent ( Type lhs, Type rhs ) : bool
lhs System.Type
rhs System.Type
return bool

BindBinaryOperation() public method

Performs the binding of the dynamic binary operation.
public BindBinaryOperation ( BinaryOperationBinder binder, DynamicMetaObject arg ) : DynamicMetaObject
binder System.Dynamic.BinaryOperationBinder /// An instance of the that represents the details of the dynamic operation. ///
arg System.Dynamic.DynamicMetaObject /// An instance of the representing the right hand side of the binary operation. ///
return System.Dynamic.DynamicMetaObject

BindConvert() public method

Performs the binding of the dynamic conversion operation.
public BindConvert ( ConvertBinder binder ) : DynamicMetaObject
binder System.Dynamic.ConvertBinder /// An instance of the that represents the details of the dynamic operation. ///
return System.Dynamic.DynamicMetaObject

BindCreateInstance() public method

Performs the binding of the dynamic create instance operation.
public BindCreateInstance ( CreateInstanceBinder binder, DynamicMetaObject args ) : DynamicMetaObject
binder System.Dynamic.CreateInstanceBinder /// An instance of the that represents the details of the dynamic operation. ///
args System.Dynamic.DynamicMetaObject /// An array of instances - arguments to the create instance operation. ///
return System.Dynamic.DynamicMetaObject

BindDeleteIndex() public method

Performs the binding of the dynamic delete index operation.
public BindDeleteIndex ( DeleteIndexBinder binder, DynamicMetaObject indexes ) : DynamicMetaObject
binder System.Dynamic.DeleteIndexBinder /// An instance of the that represents the details of the dynamic operation. ///
indexes System.Dynamic.DynamicMetaObject /// An array of instances - indexes for the delete index operation. ///
return System.Dynamic.DynamicMetaObject

BindDeleteMember() public method

Performs the binding of the dynamic delete member operation.
public BindDeleteMember ( DeleteMemberBinder binder ) : DynamicMetaObject
binder System.Dynamic.DeleteMemberBinder /// An instance of the that represents the details of the dynamic operation. ///
return System.Dynamic.DynamicMetaObject

BindGetIndex() public method

Performs the binding of the dynamic get index operation.
public BindGetIndex ( GetIndexBinder binder, DynamicMetaObject indexes ) : DynamicMetaObject
binder GetIndexBinder /// An instance of the that represents the details of the dynamic operation. ///
indexes DynamicMetaObject /// An array of instances - indexes for the get index operation. ///
return DynamicMetaObject

BindGetMember() public method

Performs the binding of the dynamic get member operation.
public BindGetMember ( GetMemberBinder binder ) : DynamicMetaObject
binder GetMemberBinder /// An instance of the that represents the details of the dynamic operation. ///
return DynamicMetaObject

BindInvoke() public method

Performs the binding of the dynamic invoke operation.
public BindInvoke ( InvokeBinder binder, DynamicMetaObject args ) : DynamicMetaObject
binder InvokeBinder /// An instance of the that represents the details of the dynamic operation. ///
args DynamicMetaObject /// An array of instances - arguments to the invoke operation. ///
return DynamicMetaObject

BindInvokeMember() public method

Performs the binding of the dynamic invoke member operation.
public BindInvokeMember ( InvokeMemberBinder binder, DynamicMetaObject args ) : DynamicMetaObject
binder InvokeMemberBinder /// An instance of the that represents the details of the dynamic operation. ///
args DynamicMetaObject /// An array of instances - arguments to the invoke member operation. ///
return DynamicMetaObject

BindSetIndex() public method

Performs the binding of the dynamic set index operation.
public BindSetIndex ( SetIndexBinder binder, DynamicMetaObject indexes, DynamicMetaObject value ) : DynamicMetaObject
binder SetIndexBinder /// An instance of the that represents the details of the dynamic operation. ///
indexes DynamicMetaObject /// An array of instances - indexes for the set index operation. ///
value DynamicMetaObject /// The representing the value for the set index operation. ///
return DynamicMetaObject

BindSetMember() public method

Performs the binding of the dynamic set member operation.
public BindSetMember ( SetMemberBinder binder, DynamicMetaObject value ) : DynamicMetaObject
binder SetMemberBinder /// An instance of the that represents the details of the dynamic operation. ///
value DynamicMetaObject /// The representing the value for the set member operation. ///
return DynamicMetaObject

BindUnaryOperation() public method

Performs the binding of the dynamic unary operation.
public BindUnaryOperation ( UnaryOperationBinder binder ) : DynamicMetaObject
binder UnaryOperationBinder /// An instance of the that represents the details of the dynamic operation. ///
return DynamicMetaObject

BindingHasFailed() protected static method

protected static BindingHasFailed ( DynamicMetaObject metaObject ) : bool
metaObject DynamicMetaObject
return bool

CreateBoundDynamicMetaObject() protected method

Performs the binding of the dynamic operation and relaxes the type restrictions for the target of the delegation.
When bindings are evaluated, they are restricted to the type being operated upon. In order to support delegation to other types, we have to relax the type restrictions on the DynamicMetaObject.
protected CreateBoundDynamicMetaObject ( DynamicMetaObject>.Func bindTarget, object target ) : DynamicMetaObject
bindTarget DynamicMetaObject>.Func /// Performs the binding of the dynamic operation if the target dynamic object cannot bind. /// The target of the dynamic operation.
target object The target of the dynamic operation.
return DynamicMetaObject

DelegatingMetaObject() protected method

Initializes a new instance of the DelegatingMetaObject class.
protected DelegatingMetaObject ( Expression expression, object value, DynamicMetaObject baseMetaObject ) : System
expression Expression /// The expression representing this during the dynamic binding process. ///
value object /// The runtime value represented by the . ///
baseMetaObject DynamicMetaObject /// The representing the result of the binding against the primary delegating object. ///
return System

GetLimitedSelf() protected method

protected GetLimitedSelf ( ) : Expression
return Expression

GetTypeRestriction() protected method

Gets the type restrictions for the current target DynamicMetaObject.Value and Expression.
protected GetTypeRestriction ( ) : BindingRestrictions
return BindingRestrictions

RelaxTypeRestrictions() protected method

Relaxes the type restrictions for the current T:System.Dynamic.DynamicMetaObject based on the new delegation target.
protected RelaxTypeRestrictions ( DynamicMetaObject result, object target ) : DynamicMetaObject
result DynamicMetaObject The result.
target object The target of the dynamic operation.
return DynamicMetaObject

Resolve() protected abstract method

Implemented by inheritors, this function should determine the receiver for the binding of the dynamic operation and use the bindTarget to perform the binding and return the result of that binding operation.
The bindTarget can be used multiple times to attempt potential binding operations.
protected abstract Resolve ( DynamicMetaObject>.Func bindTarget ) : DynamicMetaObject
bindTarget DynamicMetaObject>.Func /// Performs the binding of the dynamic operation if the target dynamic object cannot bind. /// The target of the dynamic operation.
return DynamicMetaObject