public PerspexDesigner() { InitializeComponent(); BindingOperations.SetBinding(State, TextBox.TextProperty, new Binding(nameof(ProcessHost.State)) { Source = _host, Mode = BindingMode.OneWay }); _host.PropertyChanged += _host_PropertyChanged; _host.MetadataArrived += data => Metadata = data; }
PerspexDesignerMetadata BuildMetadata(List <Assembly> asms, Type xmlNsAttr) { var rv = new PerspexDesignerMetadata() { NamespaceAliases = new List <MetadataNamespaceAlias>(), Types = new List <MetadataType>() }; foreach (var asm in asms) { foreach (dynamic xmlns in asm.GetCustomAttributes().Where(a => a.GetType() == xmlNsAttr)) { rv.NamespaceAliases.Add(new MetadataNamespaceAlias { Namespace = (string)xmlns.ClrNamespace, XmlNamespace = (string)xmlns.XmlNamespace }); } try { foreach (var type in asm.GetTypes()) { try { if (!type.IsPublic || type.IsAbstract) { continue; } var t = new MetadataType() { Name = type.Name, Namespace = type.Namespace, Properties = new List <MetadataProperty>() }; rv.Types.Add(t); foreach (var prop in type.GetProperties()) { if (prop.GetMethod?.IsPublic != true) { continue; } var p = new MetadataProperty() { Name = prop.Name, Type = prop.PropertyType == typeof(string) || (prop.PropertyType.IsValueType && prop.PropertyType.Assembly == typeof(int).Assembly) ? MetadataPropertyType.BasicType : prop.PropertyType.IsEnum ? MetadataPropertyType.Enum : MetadataPropertyType.MetadataType }; if (p.Type == MetadataPropertyType.Enum) { p.EnumValues = Enum.GetNames(prop.PropertyType); } if (p.Type == MetadataPropertyType.MetadataType) { p.MetadataFullTypeName = prop.PropertyType.Namespace + "." + prop.PropertyType.Name; } t.Properties.Add(p); } } catch { // } } } catch { // } } return(rv); }
public UpdateMetadataMessage(PerspexDesignerMetadata metadata) { Metadata = metadata; }