private void ProcessPropertyWithConverterPackUri(BamlPropertyWithConverter bamlPropertyWithConverter) { string value = bamlPropertyWithConverter.Value; if (string.IsNullOrEmpty(value)) { return; } var uri = PackUri.Parse(value); if (uri == null) { return; } if (uri.Assembly == null) { return; } var assemblyRef = uri.Assembly; var targetAssembly = _assembly.AssemblyManager.Resolve(assemblyRef, _assembly.Module, false) as BuildAssembly; if (targetAssembly == null) { return; } bool changed = false; string name = assemblyRef.Name; Version version = assemblyRef.Version; byte[] publicKeyToken = assemblyRef.PublicKeyToken; if (targetAssembly.NameChanged) { name = targetAssembly.NewName; changed = true; } if (version != null && targetAssembly.VersionChanged) { version = targetAssembly.NewVersion; changed = true; } if (publicKeyToken != null && targetAssembly.PublicKeyChanged) { publicKeyToken = targetAssembly.NewPublicKeyToken; changed = true; } if (changed) { uri.Assembly = new AssemblyReference(name, null, version, publicKeyToken); AddMapping(new PropertyWithConverterMap(bamlPropertyWithConverter, uri.ToString())); } }
private void ProcessPropertyWithConverterCommand(BamlPropertyWithConverter bamlPropertyWithConverter) { string value = bamlPropertyWithConverter.Value; if (string.IsNullOrEmpty(value)) { return; } value = value.Trim(); int index = value.LastIndexOf(".", StringComparison.Ordinal); if (index < 0) { return; } string typeName = value.Substring(0, index); string localName = value.Substring(index + 1); BuildType type; bool changed = MapTypeNameToken(ref typeName, out type); if (type != null) { changed |= (GetChangedPropertyName(type, ref localName) || GetChangedFieldName(type, ref localName)); } if (changed) { value = typeName + "." + localName; AddMapping(new PropertyWithConverterMap(bamlPropertyWithConverter, value)); } }
private void ProcessPropertyWithConverterTypeName(BamlPropertyWithConverter bamlPropertyWithConverter) { string value = bamlPropertyWithConverter.Value; if (string.IsNullOrEmpty(value)) { return; } BuildType type; if (MapTypeNameToken(ref value, out type)) { AddMapping(new PropertyWithConverterMap(bamlPropertyWithConverter, value)); } }
private void ProcessPropertyWithConverterEnum(BamlPropertyWithConverter bamlPropertyWithConverter) { string value = bamlPropertyWithConverter.Value; if (string.IsNullOrEmpty(value)) { return; } var bamlProperty = bamlPropertyWithConverter.DeclaringProperty as BamlPropertyInfo; if (bamlProperty == null) { return; } var property = bamlProperty.Resolve(_assembly) as BuildProperty; if (property == null) { return; } var enumType = property.ReturnType.Resolve(property.Assembly) as BuildType; if (enumType == null) { return; } var enumField = enumType.Fields.Find(value) as BuildField; if (enumField == null) { return; } if (!enumField.NameChanged) { return; } AddMapping(new PropertyWithConverterMap(bamlPropertyWithConverter, enumField.NewName)); }
private void ProcessPropertyWithConverterEvent(BamlPropertyWithConverter bamlPropertyWithConverter) { var rootElementType = _state.RootElementType as BuildType; if (rootElementType == null) { return; } string name = bamlPropertyWithConverter.Value; foreach (BuildMethod method in rootElementType.Methods) { if (method.Name != name) { continue; } if (method.Strip) { method.Strip = false; } } }
private bool ProcessPropertyWithConverterEvent(BamlPropertyWithConverter bamlPropertyWithConverter) { string value = bamlPropertyWithConverter.Value; if (string.IsNullOrEmpty(value)) { return(false); } var bamlProperty = bamlPropertyWithConverter.DeclaringProperty as BamlPropertyInfo; if (bamlProperty == null) { return(false); } var bamlOwnerType = bamlProperty.Type as BamlTypeInfo; if (bamlOwnerType == null) { return(false); } var type = Resolve(bamlOwnerType); if (type == null) { return(false); } var e = FindEvent(type, bamlProperty.Name); if (e == null) { return(false); } var delegateType = e.EventType.Resolve(e.Assembly) as TypeDeclaration; if (delegateType == null) { return(false); } var invokeMethod = delegateType.Methods.Find("Invoke"); if (invokeMethod == null) { return(false); } var method = FindRootElementEventMethod(value, invokeMethod) as BuildMethod; if (method == null) { return(false); } if (!method.NameChanged) { return(false); } AddMapping(new PropertyWithConverterMap(bamlPropertyWithConverter, method.NewName)); return(true); }
internal PropertyWithConverterMap(BamlPropertyWithConverter bamlNode, string value) { _bamlNode = bamlNode; _value = value; }