/// <internalonly/> /// <devdoc> /// </devdoc> public override bool Equals(object obj) { if (obj == this) { return(true); } BrowsableAttribute other = obj as BrowsableAttribute; return((other != null) && other.Browsable == browsable); }
private void ScanAnalysisServicesObjectForPropertiesWithNonDefaultValue(object o, string FriendlyPath) { if (o == null) { return; } PropertyInfo[] properties = o.GetType().GetProperties(BindingFlags.Public | BindingFlags.FlattenHierarchy | BindingFlags.Instance); foreach (PropertyInfo prop in properties) { if (!prop.CanWrite || !prop.CanRead) { continue; } object[] attrs = prop.GetCustomAttributes(typeof(System.ComponentModel.DefaultValueAttribute), true); System.ComponentModel.DefaultValueAttribute defaultAttr = (System.ComponentModel.DefaultValueAttribute)(attrs.Length > 0 ? attrs[0] : null); if (defaultAttr == null) { continue; //only show properties with defaults } attrs = prop.GetCustomAttributes(typeof(System.ComponentModel.BrowsableAttribute), true); System.ComponentModel.BrowsableAttribute browsableAttr = (System.ComponentModel.BrowsableAttribute)(attrs.Length > 0 ? attrs[0] : null); if (browsableAttr != null && !browsableAttr.Browsable) { continue; //don't show attributes marked not browsable } attrs = prop.GetCustomAttributes(typeof(System.ComponentModel.ReadOnlyAttribute), true); System.ComponentModel.ReadOnlyAttribute readOnlyAttr = (System.ComponentModel.ReadOnlyAttribute)(attrs.Length > 0 ? attrs[0] : null); if (readOnlyAttr != null && readOnlyAttr.IsReadOnly) { continue; //don't show attributes marked read only } if (prop.PropertyType.Namespace != "System" && !prop.PropertyType.IsPrimitive && !prop.PropertyType.IsValueType && !prop.PropertyType.IsEnum) { object v = prop.GetValue(o, null); if (v != null) { ScanAnalysisServicesObjectForPropertiesWithNonDefaultValue(v, FriendlyPath + " > " + prop.Name); } continue; } object value = prop.GetValue(o, null); if (defaultAttr.Value != null && !defaultAttr.Value.Equals(value)) { string sValue = (value == null ? string.Empty : value.ToString()); this.listNonDefaultProperties.Add(new NonDefaultProperty(this.DatabaseName, FriendlyPath, prop.Name, defaultAttr.Value.ToString(), sValue)); } } }
internal static void RegisterMetadata(AttributeTableBuilder builder) { Type endpointType = typeof(Endpoint); var browsableAttribute = new BrowsableAttribute(false); builder.AddCustomAttributes(endpointType, endpointType.GetProperty("BehaviorConfigurationName"), browsableAttribute); builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Headers"), browsableAttribute); builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Identity"), browsableAttribute); builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Name"), browsableAttribute); builder.AddCustomAttributes(endpointType, endpointType.GetProperty("ListenUri"), browsableAttribute); builder.AddCustomAttributes(endpointType, endpointType.GetProperty("ServiceContractName"), browsableAttribute); builder.AddCustomAttributes(endpointType, endpointType.GetProperty("Binding"), PropertyValueEditor.CreateEditorAttribute(typeof(BindingPropertyValueEditor))); }
/// <summary> /// Gets a new layout based on the LayoutAttributes defined in the specified /// Type. /// </summary> /// <param name="type">The Type of object to get a layout for.</param> /// <returns>A new GridLayout.</returns> public static GridLayout FromType(Type type) { GridLayout layout = new GridLayout(); PropertyInfo[] props = type.GetProperties(); if (props.Length == 0) { throw new Exception("Target type does not have any properties."); } foreach (PropertyInfo prop in props) { // Get BrowsableAttribute System.ComponentModel.BrowsableAttribute ba = null; object[] browseattributes; browseattributes = prop.GetCustomAttributes(typeof(System.ComponentModel.BrowsableAttribute), false); if (browseattributes.Length > 0) { ba = (System.ComponentModel.BrowsableAttribute)browseattributes[0]; } if (ba == null || ba.Browsable == true) { // Get layout attribute Framework.LayoutAttribute la = null; object[] layoutattributes; layoutattributes = prop.GetCustomAttributes(typeof(Framework.LayoutAttribute), false); if (layoutattributes.Length > 0) { la = (Framework.LayoutAttribute)layoutattributes[0]; } ColumnInfo ci = new ColumnInfo(); ci.Name = prop.Name; if (la != null) { ci.Caption = la.Caption; ci.DisplayPosition = la.DisplayPosition; ci.Format = la.Format; ci.Summary = la.ShowSummary; ci.Visible = !la.Hidden; ci.Width = la.Width; ci.HAlign = la.HAlign; } layout.Columns0.Add(ci); } } return(layout); }
protected override Attribute OnEvaluateComplete(object value) { Attribute output; try { // check if value is provided if (value == null) value = true; // assume default // create attribute output = new BrowsableAttribute((bool) value); } catch { output = new ReadOnlyAttribute(true); } return output; }
public SYNamePropertyDescriptor(PropertyDescriptor descr):base(descr) { _d = descr; int count = _d.Attributes.Count; Attribute[] attrs = new Attribute[count]; Attribute vis_att = new System.ComponentModel.BrowsableAttribute(true); for (int i = 0; i < count; ++i) { if (_d.Attributes[i].TypeId == vis_att.TypeId) { attrs[i] = vis_att; } else { attrs[i] = _d.Attributes[i]; } } _ac = new AttributeCollection(attrs); //Array.Resize(attrs, attrs.Length + 1); //attrs[attrs.Length - 1] = new System.ComponentModel.BrowsableAttribute(true); }
// Adds items to the checklistbox based on the members of the enum private void FillEnumMembers() { Type browseAttrType = typeof(System.ComponentModel.BrowsableAttribute); string[] enumNames = Enum.GetNames(enumType); foreach (string name in enumNames) { object val = Enum.Parse(enumType, name); System.Reflection.FieldInfo fi = enumType.GetField(name); Attribute attr = Attribute.GetCustomAttribute(fi, browseAttrType); if (attr != null) { System.ComponentModel.BrowsableAttribute browseAttr = (System.ComponentModel.BrowsableAttribute)attr; if (!browseAttr.Browsable) { continue; } } int intVal = (int)Convert.ChangeType(val, typeof(int)); Add(intVal, name); } }
public SYNamePropertyDescriptor(PropertyDescriptor descr) : base(descr) { _d = descr; int count = _d.Attributes.Count; Attribute[] attrs = new Attribute[count]; Attribute vis_att = new System.ComponentModel.BrowsableAttribute(true); for (int i = 0; i < count; ++i) { if (_d.Attributes[i].TypeId == vis_att.TypeId) { attrs[i] = vis_att; } else { attrs[i] = _d.Attributes[i]; } } _ac = new AttributeCollection(attrs); //Array.Resize(attrs, attrs.Length + 1); //attrs[attrs.Length - 1] = new System.ComponentModel.BrowsableAttribute(true); }
/// <summary> /// Creates a set of DataTable columns from a collection of property descriptors and an optional /// set of key names from metadata /// </summary> private void CreateColumnsFromPropDescs(PropertyDescriptorCollection properties, string[] keyNames) { List <DataColumn> keys = new List <DataColumn>(); foreach (PropertyDescriptor property in properties) { System.ComponentModel.BrowsableAttribute attr = (System.ComponentModel.BrowsableAttribute)property.Attributes[typeof(System.ComponentModel.BrowsableAttribute)]; if (attr.Browsable) { DataColumn column = ConstructColumn(property); // If there are keyNames, check if this column is one of the keys if (keyNames != null && keyNames.Contains(column.ColumnName)) { keys.Add(column); } this.Columns.Add(column); } } if (keys.Count > 0) { this.PrimaryKey = keys.ToArray(); } }
public void SetIsBrowsable( bool isBrowsable ) { var attr = (BrowsableAttribute)attributes.FirstOrDefault(a => a is BrowsableAttribute); if (attr != null) { attributes.RemoveAll(a => a is BrowsableAttribute); } attr = new BrowsableAttribute(isBrowsable); attributes.Add(attr); }
/// <internalonly/> /// <devdoc> /// <para>Gets a collection of standard values for the data type this validator is /// designed for.</para> /// </devdoc> public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { if (values == null) { // We need to get the enum values in this rather round-about way so we can filter // out fields marked Browsable(false). Note that if multiple fields have the same value, // the behavior is undefined, since what we return are just enum values, not names. Type reflectType = TypeDescriptor.GetReflectionType(type); if (reflectType == null) { reflectType = type; } FieldInfo[] fields = reflectType.GetFields(BindingFlags.Public | BindingFlags.Static); ArrayList objValues = null; if (fields != null && fields.Length > 0) { objValues = new ArrayList(fields.Length); } if (objValues != null) { foreach (FieldInfo field in fields) { BrowsableAttribute browsableAttr = null; foreach (Attribute attr in field.GetCustomAttributes(typeof(BrowsableAttribute), false)) { browsableAttr = attr as BrowsableAttribute; } if (browsableAttr == null || browsableAttr.Browsable) { object value = null; try { if (field.Name != null) { value = Enum.Parse(type, field.Name); } } catch (ArgumentException) { // Hmm, for some reason, the parse threw. Let us ignore this value. } if (value != null) { objValues.Add(value); } } } IComparer comparer = Comparer; if (comparer != null) { objValues.Sort(comparer); } } Array arr = (objValues != null) ? objValues.ToArray() : null; values = new StandardValuesCollection(arr); } return(values); }
private void ScanIntegrationServicesExecutableForPropertiesWithNonDefaultValue(DtsObject o, string FriendlyPath) { if (o == null) { return; } if (packageDefault == null) { packageDefault = new Package(); } DtsObject defaultObject; if (o is Package) { defaultObject = packageDefault; } else if (o is IDTSName) { if (dictCachedDtsObjects.ContainsKey(((IDTSName)o).CreationName)) { defaultObject = dictCachedDtsObjects[((IDTSName)o).CreationName]; } else if (o is DtsEventHandler) { defaultObject = (DtsObject)packageDefault.EventHandlers.Add(((IDTSName)o).CreationName); dictCachedDtsObjects.Add(((IDTSName)o).CreationName, defaultObject); } else if (o is ConnectionManager) { defaultObject = (DtsObject)packageDefault.Connections.Add(((IDTSName)o).CreationName); dictCachedDtsObjects.Add(((IDTSName)o).CreationName, defaultObject); } else { defaultObject = packageDefault.Executables.Add(((IDTSName)o).CreationName); dictCachedDtsObjects.Add(((IDTSName)o).CreationName, defaultObject); } } else { throw new Exception("Object " + o.GetType().FullName + " does not implement IDTSName."); } PropertyInfo[] properties = o.GetType().GetProperties(BindingFlags.Public | BindingFlags.FlattenHierarchy | BindingFlags.Instance); foreach (PropertyInfo prop in properties) { if (!prop.CanWrite || !prop.CanRead) { continue; } //SSIS objects don't have a DefaultValueAttribute, which is wy we have to create a new control flow object (defaultObject) above and compare properties from this object to that object object[] attrs = prop.GetCustomAttributes(typeof(System.ComponentModel.BrowsableAttribute), true); System.ComponentModel.BrowsableAttribute browsableAttr = (System.ComponentModel.BrowsableAttribute)(attrs.Length > 0 ? attrs[0] : null); if (browsableAttr != null && !browsableAttr.Browsable) { continue; //don't show attributes marked not browsable } attrs = prop.GetCustomAttributes(typeof(System.ComponentModel.ReadOnlyAttribute), true); System.ComponentModel.ReadOnlyAttribute readOnlyAttr = (System.ComponentModel.ReadOnlyAttribute)(attrs.Length > 0 ? attrs[0] : null); if (readOnlyAttr != null && readOnlyAttr.IsReadOnly) { continue; //don't show attributes marked read only } if (prop.PropertyType.Namespace != "System" && !prop.PropertyType.IsPrimitive && !prop.PropertyType.IsValueType && !prop.PropertyType.IsEnum) { continue; } if (prop.PropertyType == typeof(DateTime)) { continue; } if (prop.PropertyType == typeof(string)) { continue; } if (prop.Name == "VersionBuild") { continue; } if (prop.Name == "VersionMajor") { continue; } if (prop.Name == "VersionMinor") { continue; } if (prop.Name == "PackageType") { continue; } object value = prop.GetValue(o, null); object defaultValue = prop.GetValue(defaultObject, null); if (defaultValue != null && !defaultValue.Equals(value)) { string sValue = (value == null ? string.Empty : value.ToString()); this.listNonDefaultProperties.Add(new NonDefaultProperty(this.DatabaseName, FriendlyPath, prop.Name, defaultValue.ToString(), sValue)); } } if (o is IDTSObjectHost) { IDTSObjectHost host = (IDTSObjectHost)o; if (host.InnerObject is Microsoft.SqlServer.Dts.Pipeline.Wrapper.MainPipe) { properties = typeof(Microsoft.SqlServer.Dts.Pipeline.Wrapper.MainPipe).GetProperties(BindingFlags.Public | BindingFlags.FlattenHierarchy | BindingFlags.Instance); } else if (host.InnerObject is IDTSConnectionManagerDatabaseParametersXX) { properties = typeof(IDTSConnectionManagerDatabaseParametersXX).GetProperties(BindingFlags.Public | BindingFlags.FlattenHierarchy | BindingFlags.Instance); } else //probably won't turn up any properties because reflection on a COM object Type doesn't work { properties = host.InnerObject.GetType().GetProperties(BindingFlags.Public | BindingFlags.FlattenHierarchy | BindingFlags.Instance); } foreach (PropertyInfo prop in properties) { if (!prop.CanWrite || !prop.CanRead) { continue; } object[] attrs = prop.GetCustomAttributes(typeof(System.ComponentModel.BrowsableAttribute), true); System.ComponentModel.BrowsableAttribute browsableAttr = (System.ComponentModel.BrowsableAttribute)(attrs.Length > 0 ? attrs[0] : null); if (browsableAttr != null && !browsableAttr.Browsable) { continue; //don't show attributes marked not browsable } attrs = prop.GetCustomAttributes(typeof(System.ComponentModel.ReadOnlyAttribute), true); System.ComponentModel.ReadOnlyAttribute readOnlyAttr = (System.ComponentModel.ReadOnlyAttribute)(attrs.Length > 0 ? attrs[0] : null); if (readOnlyAttr != null && readOnlyAttr.IsReadOnly) { continue; //don't show attributes marked read only } if (prop.PropertyType.Namespace != "System" && !prop.PropertyType.IsPrimitive && !prop.PropertyType.IsValueType && !prop.PropertyType.IsEnum) { continue; } if (prop.PropertyType == typeof(DateTime)) { continue; } if (prop.PropertyType == typeof(string)) { continue; } if (prop.Name == "VersionBuild") { continue; } if (prop.Name == "VersionMajor") { continue; } if (prop.Name == "VersionMinor") { continue; } if (prop.Name == "PackageType") { continue; } if (prop.Name.StartsWith("IDTS")) { continue; } object value; object defaultValue; if (host.InnerObject is Microsoft.SqlServer.Dts.Pipeline.Wrapper.MainPipe) { try { value = host.InnerObject.GetType().InvokeMember(prop.Name, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.FlattenHierarchy | System.Reflection.BindingFlags.Instance, null, host.InnerObject, null); } catch { continue; } try { defaultValue = ((IDTSObjectHost)defaultObject).InnerObject.GetType().InvokeMember(prop.Name, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.FlattenHierarchy | System.Reflection.BindingFlags.Instance, null, ((IDTSObjectHost)defaultObject).InnerObject, null); } catch { defaultValue = null; } } else { value = prop.GetValue(host.InnerObject, null); defaultValue = prop.GetValue(((IDTSObjectHost)defaultObject).InnerObject, null); } if (defaultValue != null && !defaultValue.Equals(value)) { string sValue = (value == null ? string.Empty : value.ToString()); this.listNonDefaultProperties.Add(new NonDefaultProperty(this.DatabaseName, FriendlyPath, prop.Name, defaultValue.ToString(), sValue)); } } //scan data flow transforms if (host.InnerObject is Microsoft.SqlServer.Dts.Pipeline.Wrapper.MainPipe) { Microsoft.SqlServer.Dts.Pipeline.Wrapper.MainPipe pipe = (Microsoft.SqlServer.Dts.Pipeline.Wrapper.MainPipe)host.InnerObject; Microsoft.SqlServer.Dts.Pipeline.Wrapper.MainPipe defaultPipe = (Microsoft.SqlServer.Dts.Pipeline.Wrapper.MainPipe)((IDTSObjectHost)defaultObject).InnerObject; foreach (IDTSComponentMetaDataXX transform in pipe.ComponentMetaDataCollection) { IDTSComponentMetaDataXX defaultTransform = defaultPipe.ComponentMetaDataCollection.New(); defaultTransform.ComponentClassID = transform.ComponentClassID; CManagedComponentWrapper defaultInst = defaultTransform.Instantiate(); try { defaultInst.ProvideComponentProperties(); } catch { continue; //if there's a corrupt package (or if you don't have the component installed on your laptop?) then this might fail... so just move on } if (!transform.ValidateExternalMetadata) //this property isn't in the CustomPropertyCollection, so we have to check it manually { this.listNonDefaultProperties.Add(new NonDefaultProperty(this.DatabaseName, FriendlyPath + "\\" + transform.Name, "ValidateExternalMetadata", "True", "False")); } foreach (IDTSOutputXX output in transform.OutputCollection) //check for error row dispositions { if (output.ErrorRowDisposition == DTSRowDisposition.RD_IgnoreFailure) { this.listNonDefaultProperties.Add(new NonDefaultProperty(this.DatabaseName, FriendlyPath + "\\" + transform.Name + "\\" + output.Name, "ErrorRowDisposition", "FailComponent", "IgnoreFailure")); } if (output.TruncationRowDisposition == DTSRowDisposition.RD_IgnoreFailure) { this.listNonDefaultProperties.Add(new NonDefaultProperty(this.DatabaseName, FriendlyPath + "\\" + transform.Name + "\\" + output.Name, "TruncationRowDisposition", "FailComponent", "IgnoreFailure")); } } Microsoft.DataTransformationServices.Design.PipelinePropertiesWrapper propWrapper = new Microsoft.DataTransformationServices.Design.PipelinePropertiesWrapper(transform, transform, 0); foreach (IDTSCustomPropertyXX prop in transform.CustomPropertyCollection) { System.ComponentModel.PropertyDescriptor propDesc = (System.ComponentModel.PropertyDescriptor)propWrapper.GetType().InvokeMember("CreateCustomPropertyPropertyDescriptor", BindingFlags.DeclaredOnly | BindingFlags.NonPublic | BindingFlags.InvokeMethod | BindingFlags.Instance, null, propWrapper, new object[] { prop }); if (propDesc == null) { continue; } if (propDesc.IsReadOnly) { continue; } if (!propDesc.IsBrowsable) { continue; } if (prop.Value is string) { continue; } if (prop.Value is DateTime) { continue; } IDTSCustomPropertyXX defaultProp; try { defaultProp = defaultTransform.CustomPropertyCollection[prop.Name]; } catch { if (prop.Name == "PreCompile" && bool.Equals(prop.Value, false)) //this property doesn't show up in the new script component we created to determine defaults, so we have to check it manually { this.listNonDefaultProperties.Add(new NonDefaultProperty(this.DatabaseName, FriendlyPath + "\\" + transform.Name, prop.Name, "True", "False")); } continue; } System.ComponentModel.ITypeDescriptorContext context = new PipelinePropertyContext(transform, propDesc); string sValue = propDesc.Converter.ConvertToString(context, prop.Value); //gets nice text descriptions for enums on component properties string sDefaultValue = propDesc.Converter.ConvertToString(context, defaultProp.Value); //gets nice text descriptions for enums on component properties if (sValue == sDefaultValue) { continue; } this.listNonDefaultProperties.Add(new NonDefaultProperty(this.DatabaseName, FriendlyPath + "\\" + transform.Name, prop.Name, sDefaultValue, sValue)); } defaultPipe.ComponentMetaDataCollection.RemoveObjectByID(defaultTransform.ID); } } } }
/// <summary> /// Initializes a new instance of <see cref="T:Dataweb.NShape.Advanced.PropertyDescriptorDg" /> /// </summary> public PropertyDescriptorDg(IPropertyController controller, PropertyDescriptor descriptor, Attribute[] attributes) : base(descriptor.Name, attributes) { this.descriptor = descriptor; this.controller = controller; // We have to store the attributes and return their values in the appropriate // methods because if we don't, modifying the readonly attribute will not work browsableAttr = Attributes[typeof(BrowsableAttribute)] as BrowsableAttribute; readOnlyAttr = Attributes[typeof(ReadOnlyAttribute)] as ReadOnlyAttribute; descriptionAttr = Attributes[typeof(DescriptionAttribute)] as DescriptionAttribute; permissionAttr = descriptor.Attributes[typeof(RequiredPermissionAttribute)] as RequiredPermissionAttribute; }
public WidgetProps ParseXml(string xmlfilename) { WidgetProps props = null; string elemType = ""; string elemName = ""; object elemValue = null; string elemCategory = ""; string elemDesc = ""; bool elemBrowsable = true; bool elemReadOnly = false; string elemEditor = ""; string elemTypeConv = ""; // Parse XML file System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream str = a.GetManifestResourceStream("mkdb.Properties.wxprops.xsd"); xsd_settings = new XmlReaderSettings(); xsd_settings.ValidationType = ValidationType.Schema; xsd_settings.Schemas.Add("wxprops", new XmlTextReader(str)); // xsd_settings.Schemas.Add("props", xsdfilename); using (r = XmlReader.Create(xmlfilename, xsd_settings)) while (r.Read()) { switch (r.NodeType) { case XmlNodeType.Element: if (r.Name == "Catalog") { // Set Name if (props == null) { props = new WidgetProps(); } props.Name = r["Name"]; // this.name = r["Name"]; // this.basecontainername = r["Base"]; } if (r.Name == "Category") { elemCategory = GetElemString(r); } if (r.Name == "Property") { // Parse the data... elemType = ""; elemName = r["Name"]; elemValue = null; elemDesc = ""; elemBrowsable = true; elemReadOnly = false; elemEditor = ""; elemTypeConv = ""; } if (r.Name == "Type") elemType = GetElemString(r); if (r.Name == "Description") elemDesc = GetElemString(r); if (r.Name == "Editor") elemEditor = GetElemString(r); if (r.Name == "TypeConverter") elemTypeConv = GetElemString(r); if (r.Name == "Value") GetElemValue(r, elemType, out elemValue); break; case XmlNodeType.EndElement: if (r.Name == "Property") { // We should have all the info... // build this GenericProperty int attCount = 2; if (elemEditor != "") attCount++; if (elemTypeConv != "") attCount++; Attribute[] attr = new Attribute[attCount]; attr[0] = new BrowsableAttribute(elemBrowsable); attr[1] = new ReadOnlyAttribute(elemReadOnly); attCount = 2; if (elemEditor != "") { attr[attCount++] = new EditorAttribute(elemEditor, "UITypeEditor"); } if (elemTypeConv != "") { attr[attCount++] = new TypeConverterAttribute(elemTypeConv); } if (elemValue == null) { GetElemDefault(r, elemType, elemValue); } props.Properties.AddProperty(new GenericProperty(elemName, elemValue, elemCategory, elemDesc, attr)); } if (r.Name == "Category") { elemCategory = ""; } break; case XmlNodeType.Text: case XmlNodeType.CDATA: case XmlNodeType.Comment: case XmlNodeType.XmlDeclaration: break; case XmlNodeType.DocumentType: break; default: break; } } _wplist.Add(props); return props; }