示例#1
0
 CommandMeta(TypeMeta owner, MethodInfo method, MemberMeta condition)
     : base(owner, method.Name, typeof(ICommand))
 {
     Method       = method;
     Condition    = condition;
     HasParameter = method.GetParameters().Any();
 }
示例#2
0
 CommandMeta(TypeMeta owner, MethodInfo method, MemberMeta condition)
     : base(owner, method.Name, typeof(ICommand))
 {
     Method = method;
     Condition = condition;
     HasParameter = method.GetParameters().Any();
 }
 public ProxyTypeDescriptor(Type type)
 {
     Meta = TypeMeta.Get(type);
     ProxyType = typeof(PlatformProxy<>).MakeGenericType(type);
     _properties = Meta.Members.Select(m => new ProxyPropertyDescriptor(this, m)).ToArray();
     _propertyCollection = new PropertyDescriptorCollection(_properties);
     _events = new EventDescriptorCollection(type.GetEvents().Select(e => new ProxyEventDescriptor(e)).ToArray());
 }
示例#4
0
 public MemberMeta(TypeMeta owner, string name, Type type)
 {
     DeclaringType = owner;
     Name = name;
     MemberType = type;
     IsViewModel = ViewModelTypes.IsViewModel(type);
     IsCollection = typeof(IEnumerable).IsAssignableFromPortable(MemberType) && MemberType != typeof(string);
 }
示例#5
0
 public MemberMeta(TypeMeta owner, string name, Type type)
 {
     DeclaringType = owner;
     Name          = name;
     MemberType    = type;
     IsViewModel   = ViewModelTypes.IsViewModel(type);
     IsCollection  = typeof(IEnumerable).IsAssignableFromPortable(MemberType) && MemberType != typeof(string);
 }
示例#6
0
 internal static IEnumerable<MemberMeta> GetAll(TypeMeta owner, IEnumerable<MemberMeta> properties)
 {
     var conditions = (from property in properties
                       where property.MemberType == typeof(bool) && property.Name.StartsWith("Can")
                       select property).ToList();
     return from method in owner.Type.GetMethodsPortable()
            where method.IsPublic && !method.IsStatic && !method.IsSpecialName && method.ReturnType == typeof(void) && method.GetParameters().Length <= 1
            select new CommandMeta(owner, method, conditions.FirstOrDefault(c => c.Name == "Can" + method.Name));
 }
示例#7
0
        internal static IEnumerable <MemberMeta> GetAll(TypeMeta owner, IEnumerable <MemberMeta> properties)
        {
            var conditions = (from property in properties
                              where property.MemberType == typeof(bool) && property.Name.StartsWith("Can")
                              select property).ToList();

            return(from method in owner.Type.GetMethodsPortable()
                   where method.IsPublic && !method.IsStatic && !method.IsSpecialName && method.ReturnType == typeof(void) && method.GetParameters().Length <= 1
                   select new CommandMeta(owner, method, conditions.FirstOrDefault(c => c.Name == "Can" + method.Name)));
        }
示例#8
0
        PropertyMeta(TypeMeta owner, PropertyInfo property)
            : base(owner, property.Name, property.PropertyType)
        {
            Property = property;

            _earlierPropertyNames = property
                                    .GetCustomAttributesPortable <NotifyAfterAttribute>()
                                    .Select(a => a.OtherProperty)
                                    .ToList();
        }
示例#9
0
 public MemberMeta(TypeMeta owner, string name, Type type)
 {
     DeclaringType          = owner;
     Name                   = name;
     MemberType             = type;
     IsViewModel            = ViewModelTypes.IsViewModel(type);
     IsCollection           = typeof(IEnumerable).IsAssignableFromPortable(MemberType) && MemberType != typeof(string);
     IsObservableCollection = typeof(INotifyCollectionChanged).IsAssignableFromPortable(type) ||
                              IsBindingList(type);
 }
示例#10
0
 public static TypeMeta Get(Type type)
 {
     TypeMeta result;
     lock (_cache)
     {
         if (!_cache.TryGetValue(type, out result))
             _cache[type] = result = new TypeMeta(type);
     }
     return result;
 }
示例#11
0
        public static TypeMeta Get(Type type)
        {
            TypeMeta result;

            lock (_cache)
            {
                if (!_cache.TryGetValue(type, out result))
                {
                    _cache[type] = result = new TypeMeta(type);
                }
            }
            return(result);
        }
示例#12
0
 internal static IEnumerable <MemberMeta> GetAll(TypeMeta owner)
 {
     return(from property in owner.Type.GetPropertiesPortable()
            where property.CanRead && property.GetGetMethodPortable().IsPublic&& !property.GetGetMethodPortable().IsStatic
            select new PropertyMeta(owner, property));
 }
示例#13
0
 FieldMeta(TypeMeta owner, FieldInfo field)
     : base(owner, field.Name, field.FieldType)
 {
     Field = field;
 }
示例#14
0
 protected ViewProxy(object instance, TypeMeta type)
 {
     Instance = instance;
     _slots   = (from member in type.Members
                 select MemberSlot.Create(this, member)).ToArray();
 }
示例#15
0
 internal static IEnumerable<MemberMeta> GetAll(TypeMeta owner)
 {
     return from field in owner.Type.GetFieldsPortable()
            where field.IsPublic && !field.IsStatic
            select new FieldMeta(owner, field);
 }
示例#16
0
 FieldMeta(TypeMeta owner, FieldInfo field)
     : base(owner, field.Name, field.FieldType)
 {
     Field = field;
 }
示例#17
0
 PropertyMeta(TypeMeta owner, PropertyInfo property)
     : base(owner, property.Name, property.PropertyType)
 {
     Property = property;
 }
示例#18
0
 internal static IEnumerable <MemberMeta> GetAll(TypeMeta owner)
 {
     return(from field in owner.Type.GetFieldsPortable()
            where field.IsPublic && !field.IsStatic
            select new FieldMeta(owner, field));
 }
示例#19
0
 internal static IEnumerable<MemberMeta> GetAll(TypeMeta owner)
 {
     return from property in owner.Type.GetPropertiesPortable()
            where property.CanRead && property.GetGetMethodPortable().IsPublic && !property.GetGetMethodPortable().IsStatic
            select new PropertyMeta(owner, property);
 }
示例#20
0
 PropertyMeta(TypeMeta owner, PropertyInfo property)
     : base(owner, property.Name, property.PropertyType)
 {
     Property = property;
 }
示例#21
0
 protected PlatformProxy(object instance, TypeMeta type)
     : base(instance, type)
 {
 }
示例#22
0
 ProxyXamlType(TypeMeta meta)
 {
     _meta = meta;
     _underlyingType = typeof(PlatformProxy<>).MakeGenericType(meta.Type);
     _members = meta.Members.Select(m => new ProxyXamlMember(this, m)).ToDictionary(m => m.Name);
 }