/// <summary> /// Adds the specified item. /// </summary> /// <param name="item">The item.</param> public void Add(Property item) { if (item == null) { throw new ArgumentNullException("item"); } if (item.IsPrimaryKey) { if (PrimaryKey == null) { PrimaryKey = new PrimaryKey(); } PrimaryKey.Keys.Add(new PrimaryKeyProperty(item, string.Empty)); } else if (item is Relation) { Relations.Add(item as Relation); } else { Properties.Add(item); } AllProperties.Add(item); }
/// <summary> /// Adds the key. /// </summary> /// <param name="key">The key.</param> public void AddKey(PrimaryKeyProperty key) { if (key == null) { throw new ArgumentNullException("key"); } if (PrimaryKey == null) { PrimaryKey = new PrimaryKey(); } PrimaryKey.Keys.Add(key); AllProperties.Add(key.Key); }
/// <summary> /// Mothod that overrides the access member set /// </summary> /// <param name="binder">SetMemberBinder object</param> /// <param name="value">Value that will be set</param> /// <returns>bool, if succeeds true</returns> public override bool TrySetMember( SetMemberBinder binder, object value ) { var source = binder.GetType() == typeof(WrapRequestMemberBinder) ? ((WrapRequestMemberBinder)binder).Source : WrapPropertySource.FromBody; AllProperties.Add(new WrapRequestProperty { Name = binder.Name, Value = value, Source = source }); SetPropertyValue(binder.Name, value); return(true); }
public PcBuildAddViewModel(List <Propertie> allProperties, List <PcPart.PcType> allTypes) { foreach (var type in allTypes) { SelectListItem listItem = new SelectListItem { Text = type.ToString(), Value = type.ToString() }; AllTypes.Add(listItem); } foreach (var propertie in allProperties) { var listItem = new SelectListItem { Text = propertie._Value, Value = propertie.Id.ToString() }; AllProperties.Add(listItem); } }
public void PopulateSystemProperties() { IPropertyDescriptionList propertyDescriptionList = null; IPropertyDescription propertyDescription = null; Guid guid = new Guid(ShellIIDGuid.IPropertyDescriptionList); try { int hr = PropertySystemNativeMethods.PSEnumeratePropertyDescriptions(PropertySystemNativeMethods.PropDescEnumFilter.PDEF_ALL, ref guid, out propertyDescriptionList); if (hr >= 0) { uint count; propertyDescriptionList.GetCount(out count); guid = new Guid(ShellIIDGuid.IPropertyDescription); Dictionary <string, List <string> > dict = new Dictionary <string, List <string> >(); for (uint i = 0; i < count; i++) { propertyDescriptionList.GetAt(i, ref guid, out propertyDescription); string propName; propertyDescription.GetCanonicalName(out propName); List <string> names = null; string[] parts = propName.Split('.'); if (parts.Count() == 2) { // System.Foo if (!dict.TryGetValue(parts[0], out names)) { names = new List <string>(); dict.Add(parts[0], names); } names.Add(parts[1]); } else if (parts.Count() == 3) { // System.Bar.Baz if (!dict.TryGetValue(parts[1], out names)) { names = new List <string>(); dict.Add(parts[1], names); } names.Add(parts[2]); } // If we ever need it: // ShellPropertyDescription desc = new ShellPropertyDescription(propertyDescription); if (propertyDescription != null) { Marshal.ReleaseComObject(propertyDescription); propertyDescription = null; } } // build tree foreach (string cat in dict.Keys) { TreeItem main = new TreeItem(cat, PropType.Group); foreach (string name in dict[cat]) { main.AddChild(new TreeItem(name, PropType.Normal)); } if (cat == "System") { AllProperties.Insert(0, main); } else if (cat == "PropGroup") { foreach (TreeItem ti in main.Children) { GroupProperties.Add(ti.Name); } } else { AllProperties.Add(main); } } } } finally { if (propertyDescriptionList != null) { Marshal.ReleaseComObject(propertyDescriptionList); } if (propertyDescription != null) { Marshal.ReleaseComObject(propertyDescription); } } }
public void PopulateSystemProperties() { List <SystemProperty> systemProperties = new List <SystemProperty>(); IPropertyDescriptionList propertyDescriptionList = null; IPropertyDescription propertyDescription = null; Guid guid = new Guid(ShellIIDGuid.IPropertyDescriptionList); try { int hr = PropertySystemNativeMethods.PSEnumeratePropertyDescriptions(PropertySystemNativeMethods.PropDescEnumFilter.PDEF_ALL, ref guid, out propertyDescriptionList); if (hr >= 0) { uint count; propertyDescriptionList.GetCount(out count); guid = new Guid(ShellIIDGuid.IPropertyDescription); for (uint i = 0; i < count; i++) { propertyDescriptionList.GetAt(i, ref guid, out propertyDescription); string propName; propertyDescription.GetCanonicalName(out propName); IntPtr displayNamePtr; string displayName = null; propertyDescription.GetDisplayName(out displayNamePtr); if (displayNamePtr != IntPtr.Zero) { displayName = Marshal.PtrToStringAuto(displayNamePtr); } SystemProperty sp = new SystemProperty { FullName = propName, DisplayName = displayName }; systemProperties.Add(sp); // If we ever need it: // ShellPropertyDescription desc = new ShellPropertyDescription(propertyDescription); if (propertyDescription != null) { Marshal.ReleaseComObject(propertyDescription); propertyDescription = null; } } Dictionary <string, TreeItem> dict = new Dictionary <string, TreeItem>(); List <TreeItem> roots = new List <TreeItem>(); // Build tree based on property names foreach (SystemProperty sp in systemProperties) { AddTreeItem(dict, roots, sp); } // Wire trees to tree controls, tweaking the structure as we go TreeItem propGroup = null; foreach (TreeItem root in roots) { if (root.Name == "System") { AllProperties.Insert(0, root); // Move property groups from root to their own list propGroup = root.Children.Where(x => x.Name == "PropGroup").FirstOrDefault(); if (propGroup != null) { foreach (TreeItem ti in propGroup.Children) { GroupProperties.Add(ti.Name); } root.RemoveChild(propGroup); } // Make remaining children of System that are parents into roots List <TreeItem> movers = new List <TreeItem>(root.Children.Where(x => x.Children.Count() > 0)); foreach (TreeItem ti in movers) { root.RemoveChild(ti); AllProperties.Add(ti); } } else { AllProperties.Add(root); } } } } finally { if (propertyDescriptionList != null) { Marshal.ReleaseComObject(propertyDescriptionList); } if (propertyDescription != null) { Marshal.ReleaseComObject(propertyDescription); } } }