Exemplo n.º 1
0
        private void CreateDelegateHolders()
        {
            var bindingFlags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy;

            DelegateHolders    = new Dictionary <string, IDelegateHolder>();
            EventProperties    = InterfaceType.GetEvents(bindingFlags);
            DelegateProperties = InterfaceType.GetProperties(bindingFlags)
                                 .Where(p => typeof(Delegate).IsAssignableFrom(p.PropertyType))
                                 .ToArray();

            foreach (var eventProperty in EventProperties)
            {
                DelegateHolders[eventProperty.Name] = CreateDelegateHolder(eventProperty.EventHandlerType);
            }

            foreach (var delegateProperty in DelegateProperties)
            {
                DelegateHolders[delegateProperty.Name] = CreateDelegateHolder(delegateProperty.PropertyType);
            }
        }
Exemplo n.º 2
0
        protected Model_Should()
        {
            ModelType = InternalModel.TypeFor(InterfaceType);
            var tmp = InterfaceType
                      .GetProperties(BindingFlags.Public | BindingFlags.Instance)
                      .OrderBy(x => x.Name)
                      .Select(x => new PropInfo()
            {
                Property = x
            })
                      .ToArray();

            foreach (var p in tmp)
            {
                var sib  = ModelType.GetProperty(p.Property.Name);
                var attr = sib?.GetCustomAttribute <JsonPropertyAttribute>();
                p.Name        = attr?.PropertyName ?? p.Property.Name;
                p.Deserialize = p.Property.CanRead && (sib.GetCustomAttribute <JsonIgnoreAttribute>() is null);
                p.Serialize   = p.Deserialize && p.Property.CanWrite;
            }

            Properties = tmp.Cast <IPropInfo>().ToArray();
        }