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; }
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; }
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; }
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; }
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)); }