internal DataItemEventDescriptor(
      DataItemTypeDescriptor owner,
      EventDescriptor parent,
      Type componentType,
      Type eventType,
      Action<object, object> addHandler,
      Action<object, object> removeHandler )
      : base( owner, parent )
    {
      if( componentType == null )
        throw new ArgumentNullException( "componentType" );

      if( eventType == null )
        throw new ArgumentNullException( "eventType" );

      if( addHandler == null )
        throw new ArgumentNullException( "addHandler" );

      if( removeHandler == null )
        throw new ArgumentNullException( "removeHandler" );

      m_componentType = componentType;
      m_eventType = eventType;
      m_addHandler = addHandler;
      m_removeHandler = removeHandler;
    }
示例#2
0
        internal DataItemEventDescriptor(
            DataItemTypeDescriptor owner,
            EventDescriptor parent,
            Type componentType,
            Type eventType,
            Action <object, object> addHandler,
            Action <object, object> removeHandler)
            : base(owner, parent)
        {
            if (componentType == null)
            {
                throw new ArgumentNullException("componentType");
            }

            if (eventType == null)
            {
                throw new ArgumentNullException("eventType");
            }

            if (addHandler == null)
            {
                throw new ArgumentNullException("addHandler");
            }

            if (removeHandler == null)
            {
                throw new ArgumentNullException("removeHandler");
            }

            m_componentType = componentType;
            m_eventType     = eventType;
            m_addHandler    = addHandler;
            m_removeHandler = removeHandler;
        }
    protected DataItemEventDescriptorBase( DataItemTypeDescriptor owner, EventDescriptor parent )
      : base( parent )
    {
      if( owner == null )
        throw new ArgumentNullException( "owner" );

      m_owner = owner;
    }
示例#4
0
        internal DataItemEventDescriptorFactory(DataItemTypeDescriptor typeDescriptor)
        {
            if (typeDescriptor == null)
            {
                throw new ArgumentNullException("typeDescriptor");
            }

            m_typeDescriptor = typeDescriptor;
        }
        private Entry GetEntry()
        {
            if (m_entry == null)
            {
                m_entry = DataItemTypeDescriptor.GetEntry(m_targetType, m_descriptorType);
            }

            return(m_entry);
        }
        protected DataItemEventDescriptorBase(DataItemTypeDescriptor owner, EventDescriptor parent)
            : base(parent)
        {
            if (owner == null)
            {
                throw new ArgumentNullException("owner");
            }

            m_owner = owner;
        }
    internal ValueChangeDataItemPropertyDescriptor(
      DataItemTypeDescriptor owner,
      PropertyDescriptor parent,
      Type componentType,
      Type propertyType,
      Func<object, object> getter,
      Action<object, object> setter,
      Action<object> resetter,
      EventDescriptor eventDescriptor )
      : base( owner, parent, componentType, propertyType, getter, setter, resetter )
    {
      if( eventDescriptor == null )
        throw new ArgumentNullException( "eventDescriptor" );

      m_eventDescriptor = eventDescriptor;
      m_eventProxy = new EventProxy( this, eventDescriptor );
    }
        internal ValueChangeDataItemPropertyDescriptor(
            DataItemTypeDescriptor owner,
            PropertyDescriptor parent,
            Type componentType,
            Type propertyType,
            Func <object, object> getter,
            Action <object, object> setter,
            Action <object> resetter,
            EventDescriptor eventDescriptor)
            : base(owner, parent, componentType, propertyType, getter, setter, resetter)
        {
            if (eventDescriptor == null)
            {
                throw new ArgumentNullException("eventDescriptor");
            }

            m_eventDescriptor = eventDescriptor;
            m_eventProxy      = new EventProxy(this, eventDescriptor);
        }
    internal DataItemPropertyDescriptor(
      DataItemTypeDescriptor owner,
      PropertyDescriptor parent,
      Type componentType,
      Type propertyType,
      Func<object, object> getter,
      Action<object, object> setter,
      Action<object> resetter )
      : base( owner, parent, getter, setter, resetter )
    {
      if( componentType == null )
        throw new ArgumentNullException( "componentType" );

      if( propertyType == null )
        throw new ArgumentNullException( "propertyType" );

      m_componentType = componentType;
      m_propertyType = propertyType;
    }
    protected DataItemPropertyDescriptorBase(
      DataItemTypeDescriptor owner,
      PropertyDescriptor parent,
      Func<object, object> getter,
      Action<object, object> setter,
      Action<object> resetter )
      : base( parent )
    {
      if( owner == null )
        throw new ArgumentNullException( "owner" );

      if( getter == null )
        throw new ArgumentNullException( "getter" );

      m_owner = owner;
      m_getter = getter;
      m_setter = setter;
      m_resetter = resetter;
    }
示例#11
0
        internal DataItemPropertyDescriptor(
            DataItemTypeDescriptor owner,
            PropertyDescriptor parent,
            Type componentType,
            Type propertyType,
            Func <object, object> getter,
            Action <object, object> setter,
            Action <object> resetter)
            : base(owner, parent, getter, setter, resetter)
        {
            if (componentType == null)
            {
                throw new ArgumentNullException("componentType");
            }

            if (propertyType == null)
            {
                throw new ArgumentNullException("propertyType");
            }

            m_componentType = componentType;
            m_propertyType  = propertyType;
        }
示例#12
0
        protected DataItemPropertyDescriptorBase(
            DataItemTypeDescriptor owner,
            PropertyDescriptor parent,
            Func <object, object> getter,
            Action <object, object> setter,
            Action <object> resetter)
            : base(parent)
        {
            if (owner == null)
            {
                throw new ArgumentNullException("owner");
            }

            if (getter == null)
            {
                throw new ArgumentNullException("getter");
            }

            m_owner    = owner;
            m_getter   = getter;
            m_setter   = setter;
            m_resetter = resetter;
        }
示例#13
0
        internal ValueChangeDataItemIndexerDescriptor(
            DataItemTypeDescriptor owner,
            IndexerDescriptor parent,
            EventDescriptor eventDescriptor)
            : base(owner, parent)
        {
            if (eventDescriptor == null)
            {
                throw new ArgumentNullException("eventDescriptor");
            }

            m_eventDescriptor = eventDescriptor;
            m_eventProxy      = new EventProxy(this, eventDescriptor);

            var indexerName       = parent.IndexerName;
            var indexerParameters = parent.IndexerParameters;

            m_propertyChangedNames = new string[]
            {
                Binding.IndexerName,
                string.Format("{0}[]", indexerName),
                string.Format("{0}[{1}]", indexerName, indexerParameters)
            };
        }
 internal DataItemIndexerDescriptor(DataItemTypeDescriptor owner, IndexerDescriptor parent)
     : base(owner, parent, parent.GetValue, (!parent.IsReadOnly) ? parent.SetValue : default(Action <object, object>), null)
 {
     m_descriptor = parent;
 }
            internal static IndexerChoice GetMatch(PropertyInfo propertyInfo, object[] parameterValues)
            {
                if ((propertyInfo == null) || (parameterValues == null))
                {
                    return(null);
                }

                var parameters = propertyInfo.GetIndexParameters();

                if ((parameters == null) || (parameters.Length != parameterValues.Length))
                {
                    return(null);
                }

                var values   = new object[parameters.Length];
                var fitTypes = new FitType[parameters.Length];

                for (int i = 0; i < parameters.Length; i++)
                {
                    var parameterType      = parameters[i].ParameterType;
                    var parameterValue     = parameterValues[i];
                    var parameterValueType = (parameterValue != null) ? parameterValue.GetType() : typeof(object);

                    if (parameterValue == null)
                    {
                        if (!DataItemTypeDescriptor.IsNullableType(parameterType))
                        {
                            return(null);
                        }

                        fitTypes[i] = FitType.KeepAsType;
                    }
                    else if (!parameterType.IsAssignableFrom(parameterValueType))
                    {
                        var converter = TypeDescriptor.GetConverter(parameterType);
                        if ((converter == null) || !converter.CanConvertFrom(parameterValueType))
                        {
                            return(null);
                        }

                        try
                        {
                            parameterValue = converter.ConvertFrom(null, CultureInfo.InvariantCulture, parameterValue);
                        }
                        catch
                        {
                            return(null);
                        }

                        // An indexer that takes a parameter of any other type than string is considered a better candidate than
                        // an indexer that takes a parameter of type string.
                        fitTypes[i] = (typeof(string).IsAssignableFrom(parameterType)) ? FitType.ConvertToString : FitType.ConvertToType;
                    }
                    else
                    {
                        if (typeof(string) == parameterType)
                        {
                            fitTypes[i] = FitType.KeepAsString;
                        }
                        else if (typeof(object) == parameterType)
                        {
                            fitTypes[i] = FitType.KeepAsObject;
                        }
                        else
                        {
                            fitTypes[i] = FitType.KeepAsType;
                        }
                    }

                    values[i] = parameterValue;
                }

                return(new IndexerChoice(propertyInfo, values, fitTypes));
            }