public IPropertyProvider AddNew(string name, object value = null, TypeReference type = null)
        {
            if (value == null && type == null)
            {
                throw RuntimeFailure.DataProviderTypeOrValueNotBoth();
            }

            if (value != null)
            {
                return(AddOne(name, PropertyProvider.FromValue(value)));
            }

            return(AddOne(name, PropertyProvider.LateBound(type)));
        }
Пример #2
0
        protected override int MatchCriteriaCore(object criteria)
        {
            if (criteria == null)
            {
                return(0);
            }

            int result = 0;
            var pp     = PropertyProvider.FromValue(criteria);

            result += EnumerateExtensions().Contains(pp.GetString("Extension")) ? 1 : 0;
            result += EnumerateContentTypes().Contains(pp.GetString("ContentType")) ? 1 : 0;
            result += MatchType(pp.GetProperty("OutputType"));

            return(result);
        }
Пример #3
0
        internal static int MemberwiseEquals(object criteria, object other)
        {
            var pp    = (other == null ? PropertyProvider.Null : PropertyProvider.FromValue(other));
            int score = 0;

            foreach (var m in Properties.FromValue(criteria))
            {
                var comparand = pp.GetProperty(m.Key);
                if (comparand is Type && m.Value is Type)
                {
                    if (((Type)m.Value).GetTypeInfo().IsAssignableFrom((Type)comparand))
                    {
                        score++;
                    }
                }

                if (object.Equals(comparand, m.Value))
                {
                    score++;
                }
            }
            return(score);
        }
Пример #4
0
        public static IPropertyProvider Compose(
            IEnumerable <KeyValuePair <string, object> > propertyProviders)
        {
            if (propertyProviders == null)
            {
                throw new ArgumentNullException(nameof(propertyProviders));
            }

            return(Compose(propertyProviders.Select(
                               s => new KeyValuePair <string, IPropertyProvider>(s.Key, PropertyProvider.FromValue(s.Value)))));
        }
Пример #5
0
 public LateBoundPropertyProvider(TypeReference type)
 {
     _item = new Lazy <IPropertyProvider>(
         () => PropertyProvider.FromValue(Activation.CreateInstance(type.Resolve()))
         );
 }