コード例 #1
0
            /// <summary>
            /// Returns the ValidationModelField associated with object. If a non-null view model object is passed
            /// across then it is always used, otherwise the <see cref="ViewModelObject"/> value is used.
            /// </summary>
            /// <param name="viewModelObject"></param>
            /// <returns></returns>
            public ValidationModelField GetField(ViewModelObject viewModelObject)
            {
                ValidationModelField result;

                var obj = viewModelObject ?? SingleInstanceViewModelObject;

                try {
                    result = obj.Property.GetValue(obj.Instance, null) as ValidationModelField;
                    if (result == null)
                    {
                        result = new ValidationModelField();
                        obj.Property.SetValue(obj.Instance, result, null);
                    }
                } catch (Exception ex) {
                    throw new InvalidOperationException(String.Format("Could not set property for validation field {0} on {1} (viewModelObject={2}, {3} singleton instance(s) seen, {4} collection instances seen)",
                                                                      Field,
                                                                      obj == null ? "null" : obj.Property.Name,
                                                                      viewModelObject,
                                                                      SingleInstanceViewModelObject == null ? 0 : 1,
                                                                      CollectionViewModelObjects.Count
                                                                      ), ex);
                }

                return(result);
            }
コード例 #2
0
            /// <summary>
            /// Sets or adds the appropriate ViewModelObject property.
            /// </summary>
            public void AddViewModelObject(object instance, PropertyInfo property, bool seenOnCollection)
            {
                var viewModelObject = new ViewModelObject(instance, property);

                if (seenOnCollection)
                {
                    CollectionViewModelObjects.Add(viewModelObject);
                }
                else
                {
                    if (SingleInstanceViewModelObject != null)
                    {
                        throw new InvalidOperationException($"Seen a single instance of {Field} on at least two non-collection objects: {SingleInstanceViewModelObject.Instance.GetType().Name} and {instance.GetType().Name}");
                    }
                    SingleInstanceViewModelObject = viewModelObject;
                }
            }
コード例 #3
0
 public ObjectTranslation()
 {
     InitializeComponent();
     BindingContext = new ViewModelObject();
 }