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));
        }
Exemple #5
0
        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;
 }