Beispiel #1
0
        public Binding AddBinding <TProp>(DependencyProperty <TProp> vProperty, IClassMethod <TProp> vmProperty)
        {
            var result = new Binding <TProp>(this, vProperty, vmProperty);

            m_Bindings.Add(result);
            return(result);
        }
Beispiel #2
0
 public void Unhook(IVisualElement elt, IClassMethod vmMethod)
 {
     if (m_Hook != null)
     {
         var    key = new CallbackTuple(elt, vmMethod);
         Action callback;
         if (m_CallbackRegistered != null && m_CallbackRegistered.TryGetValue(key, out callback))
         {
             m_Hook.Remove((TOwner)elt, callback);
         }
     }
 }
Beispiel #3
0
        protected void ExecuteCommand(IClassMethod classMethod)
        {
            var resolvedDataContext = dataContext;

            if (resolvedDataContext == null)
            {
                UnityDebug.LogWarning("ExecuteCommand without data context");
                return;
            }

            classMethod.Execute(resolvedDataContext);
        }
        public override void VisitClassMethod <TAttributeGroup, TDeclaringType, TGenericParameter, TTypeReference, TParameter, TMethodBody>(
            IClassMethod <TAttributeGroup, TDeclaringType, TGenericParameter, TTypeReference, TParameter, TMethodBody> method)
        {
            ClassMethod properties;
            ObjectInitializerExpression expression = CreateExpression(typeof(ClassMethod));

            expression.CreateObjectExpression.NewExpression.Parameters.Add(CreateArgument(method.Name));
            expression.Members.AddIfNotNull(nameof(properties.Visibility), method.Visibility);
            expression.Members.AddIfNotNull(nameof(properties.InheritanceModifier), method.InheritanceModifier);
            expression.Members.AddIfNotNull(nameof(properties.IsAsync), method.IsAsync);
            expression.Members.AddIfNotNull(nameof(properties.ReturnType), method.ReturnType);
            expression.Members.AddIfNotNull(nameof(properties.GenericParameters), method.GenericParameters);
            expression.Members.AddIfNotNull(nameof(properties.Parameters), method.Parameters);
            UseExpression(expression);
        }
Beispiel #5
0
 public void Hook(IVisualElement elt, IClassMethod vmMethod)
 {
     if (m_Hook != null)
     {
         var key = new CallbackTuple(elt, vmMethod);
         if (m_CallbackRegistered == null)
         {
             m_CallbackRegistered = new Dictionary <CallbackTuple, Action>();
         }
         if (!m_CallbackRegistered.ContainsKey(key))
         {
             var callback = GetCallbackFor(elt, vmMethod);
             m_CallbackRegistered[key] = callback;
             m_Hook.Add((TOwner)elt, callback);
         }
     }
 }
Beispiel #6
0
 public override void VisitClassMethod <TAttributeGroup, TDeclaringType, TGenericParameter, TTypeReference, TParameter, TMethodBody>(
     IClassMethod <TAttributeGroup, TDeclaringType, TGenericParameter, TTypeReference, TParameter, TMethodBody> method)
 {
     visitor.VisitClassMethodWithReflection((ClassMethodWithReflection)(object)method);
 }
Beispiel #7
0
 public CallbackTuple(IVisualElement element, IClassMethod vmMethod)
 {
     this.element  = element;
     this.vmMethod = vmMethod;
 }
Beispiel #8
0
 public CallbackTuple(IVisualElement element, IClassMethod <TProp> vmMethod)
 {
     this.element  = element;
     this.vmMethod = vmMethod;
     vmProperty    = null;
 }
Beispiel #9
0
 public CallbackTuple(IVisualElement element, ClassProperty <TProp> vmProperty)
 {
     this.element    = element;
     this.vmProperty = vmProperty;
     vmMethod        = null;
 }
Beispiel #10
0
 static Action GetCallbackFor(IVisualElement elt, IClassMethod vmMethod)
 {
     return(() => vmMethod.Execute(elt.dataContext));
 }
Beispiel #11
0
 public ActionBinding(IVisualElement elt, ActionDependencyProperty <TOwner> vProperty, IClassMethod vmProperty)
 {
     Assert.IsNotNull(elt);
     Assert.IsNotNull(vProperty);
     Assert.IsNotNull(vmProperty);
     m_ViewProperty  = vProperty;
     m_VisualElement = elt;
     vProperty.Hook(elt, vmProperty);
 }
Beispiel #12
0
 public static int GetHashCodeFor(ActionDependencyProperty <TOwner> vProperty, IClassMethod vmProperty)
 {
     return(vProperty.GetHashCode() ^ vmProperty.GetHashCode());
 }
Beispiel #13
0
        public Binding AddBinding <TOwner>(ActionDependencyProperty <TOwner> vProperty, IClassMethod vmProperty)
            where TOwner : IVisualElement
        {
            var result = new ActionBinding <TOwner>(this, vProperty, vmProperty);

            m_Bindings.Add(result);
            return(result);
        }