コード例 #1
0
ファイル: MainVM.Test.cs プロジェクト: tezos-blue/wallet
        public async Task BeforeEach()
        {
            await ConnectToSimulation();

            Main = new MainVM(Engine);

            monitor = new PropertyMonitor(Main);
        }
コード例 #2
0
        /// <summary>
        /// Creates an listener for an view model and register it on the host.
        /// </summary>
        /// <typeparam name="T">Type of the view model.</typeparam>
        /// <typeparam name="TProperty">Type of the property to listen to.</typeparam>
        /// <param name="host">Host to register the listener to.</param>
        /// <param name="source">The view model to listen to.</param>
        /// <param name="propertyExpression">The Expression to the property.
        /// Must be a MemberExpression.</param>
        /// <returns>The property Listener.</returns>
        /// <exception cref="InvalidOperationException">If Expression is not an memberexpression.</exception>
        public static IPropertyListener Listen <T, TProperty>(this IListenerHost host, T source, Expression <Func <T, TProperty> > propertyExpression)
            where T : INotifyPropertyChanged
        {
            if (propertyExpression.Body.NodeType == ExpressionType.MemberAccess &&
                propertyExpression.Body is MemberExpression me)
            {
                var propertyName = me.Member.Name;
                var listener     = new PropertyMonitor <T, TProperty>(source, propertyName, propertyExpression.Compile());
                host.AddListener(listener);

                return(listener);
            }

            throw new InvalidOperationException($"Expression must point to an Property of an view model of type {nameof(INotifyPropertyChanged)}.");
        }
コード例 #3
0
 public override void OnInspectorGUI()
 {
     t        = (PropertyMonitor)target;
     t.target = EditorGUILayout.ObjectField("Target", t.target, typeof(GameObject), true) as GameObject;
     if (t.target != null)
     {
         if (t.component != null)
         {
             int i = getComponents().IndexOf(t.component);
             if (i >= 0)
             {
                 componentIndex = i;
             }
         }
         componentIndex  = EditorGUILayout.Popup("Component", componentIndex, getComponentNames().ToArray());
         targetComponent = getComponents()[componentIndex];
         List <string> properties = new List <string>();
         PropertyMonitor.GetProperties(targetComponent).ToList().ForEach(p => properties.Add(p.Name));
         if (properties.Count > 0)
         {
             if (t.fieldName != null)
             {
                 int fi = properties.IndexOf(t.fieldName);
                 if (fi >= 0)
                 {
                     propertyIndex = fi;
                 }
             }
             propertyIndex = EditorGUILayout.Popup("Property", propertyIndex, properties.ToArray());
             if (propertyIndex >= properties.Count)
             {
                 propertyIndex = 0;
             }
             fieldName = properties[propertyIndex];
         }
     }
     t.formatting = EditorGUILayout.TextField("Formatting", t.formatting);
     if (GUI.changed)
     {
         t.component = getComponents()[componentIndex];
         t.fieldName = fieldName;
         EditorUtility.SetDirty(target);
         serializedObject.ApplyModifiedProperties();
     }
 }