Ejemplo n.º 1
0
        public DescriptorVariable(IClimbStore store, Expression processor, Expression owner, IStateMember member, Type runtimeType)
        {
            Type descriptorType =
                DescriptorExtensions.GetDescriptorType(member, runtimeType);

            Type memberLocalType =
                typeof(MemberLocal <,>).MakeGenericType(member.MemberType, runtimeType);

            _reference = Expression.Variable(descriptorType, member.Name.FirstLowerCase() + "Descriptor");

            object memberLocal = Activator.CreateInstance(memberLocalType, store, member);

            ConstructorInfo constructor = descriptorType.GetConstructors().FirstOrDefault();

            ParameterInfo ownerParameter     = constructor.GetParameters()[1];
            Type          ownerParameterType = ownerParameter.ParameterType;

            NewExpression creation =
                Expression.New(constructor,
                               processor,
                               owner.Convert(ownerParameterType),
                               memberLocal.Constant(),
                               store.Constant());

            BinaryExpression assign = Expression.Assign(_reference, creation);

            _descriptorDeclaration = assign;
        }
Ejemplo n.º 2
0
 // TRuntime is Enum!
 public EnumReadWriteDescriptor(object processor,
                                object owner,
                                MemberLocal <TField, TRuntime> member,
                                IClimbStore climbStore)
     : base(processor, owner, member, climbStore)
 {
 }
Ejemplo n.º 3
0
 // TField is Enum!
 public EnumWriteOnlyDescriptor(object processor,
                                object owner,
                                MemberLocal <TField, TField> member,
                                IClimbStore climbStore)
     : base(processor, owner, member, climbStore)
 {
 }
 public RouteDelegateFactory(Type processorType, IMethodMapper methodMapper, IClimbStore climbStore, IExpressionCompiler compiler)
 {
     _processorType  = processorType;
     _climbStore     = climbStore;
     _specialMutator = new SpecialMethodMutator(processorType);
     _methodMapper   = methodMapper;
     _compiler       = compiler;
 }
Ejemplo n.º 5
0
 protected ValueDescriptor(object processor, object owner, MemberLocal <TField, TRuntime> member, IClimbStore climbStore)
 {
     _owner          = owner;
     _member         = member;
     _climbStore     = climbStore;
     _processor      = processor;
     _isStructMember = Member.Member.OwnerType.IsValueType;
 }
Ejemplo n.º 6
0
        public MemberLocal(IClimbStore climbStore,
                           IStateMember member)
        {
            _member = member;

            _getter =
                new Lazy <Func <object, TField> >(() => climbStore.GetGetter <TField>(member));

            _setter =
                new Lazy <Action <object, TField> >(() => climbStore.GetSetter <TField>(member));

            _climb =
                new Lazy <ClimbDelegate <TRuntime> >
                    (() => climbStore.GetClimb <TRuntime>(typeof(TRuntime)));

            _structClimb =
                new Lazy <ClimbDelegate <object> >
                    (() => climbStore.GetClimb <object>(typeof(TRuntime)));
        }
Ejemplo n.º 7
0
 public DescriptorWriter(IClimbStore store)
 {
     _store = store;
 }