コード例 #1
0
        public string getNewEventName(EventDef eventDef)
        {
            string newName = eventNameCreator.create();

            addEventName(newName);
            return(newName);
        }
コード例 #2
0
        public string createNamespace(TypeDef type, string ns)
        {
            string newName;

            string asmFullName;

            if (type.Module.Assembly != null)
            {
                asmFullName = type.Module.Assembly.FullName;
            }
            else
            {
                asmFullName = "<no assembly>";
            }

            // Make sure that two namespaces with the same names in different modules aren't renamed
            // to the same name.
            var key = string.Format(" [{0}] [{1}] [{2}] [{3}] ",
                                    type.Module.Location,
                                    asmFullName,
                                    type.Module.Name,
                                    ns);

            if (namespaceToNewName.TryGetValue(key, out newName))
            {
                return(newName);
            }
            return(namespaceToNewName[key] = createNamespaceName.create());
        }
コード例 #3
0
        public string create(TypeSig typeRef)
        {
            typeRef = typeRef.RemovePinnedAndModifiers();
            if (typeRef == null)
            {
                return(unknownNameCreator.create());
            }
            var gis = typeRef as GenericInstSig;

            if (gis != null)
            {
                if (gis.FullName == "System.Nullable`1" &&
                    gis.GenericArguments.Count == 1 && gis.GenericArguments[0] != null)
                {
                    typeRef = gis.GenericArguments[0];
                }
            }

            string prefix = getPrefix(typeRef);

            var elementType = typeRef.ScopeType;

            if (elementType == null && isFnPtrSig(typeRef))
            {
                return(fnPtrNameCreator.create());
            }
            if (isGenericParam(elementType))
            {
                return(genericParamNameCreator.create());
            }

            NameCreator nc;
            var         typeFullName = typeRef.FullName;

            if (typeNames.TryGetValue(typeFullName, out nc))
            {
                return(nc.create());
            }

            var    fullName = elementType == null ? typeRef.FullName : elementType.FullName;
            string shortName;
            var    dict = prefix == "" ? fullNameToShortName : fullNameToShortNamePrefix;

            if (!dict.TryGetValue(fullName, out shortName))
            {
                fullName = fullName.Replace('/', '.');
                int index = fullName.LastIndexOf('.');
                shortName = index > 0 ? fullName.Substring(index + 1) : fullName;

                index = shortName.LastIndexOf('`');
                if (index > 0)
                {
                    shortName = shortName.Substring(0, index);
                }
            }

            return(addTypeName(typeFullName, shortName, prefix).create());
        }
コード例 #4
0
ファイル: TypeNames.cs プロジェクト: kidhudi/de4dot
        public string create(TypeReference typeRef)
        {
            if (typeRef.IsGenericInstance)
            {
                var git = (GenericInstanceType)typeRef;
                if (git.ElementType.FullName == "System.Nullable`1" &&
                    git.GenericArguments.Count == 1 && git.GenericArguments[0] != null)
                {
                    typeRef = git.GenericArguments[0];
                }
            }

            string prefix = getPrefix(typeRef);

            var elementType = typeRef.GetElementType();

            if (elementType is GenericParameter)
            {
                return(genericParamNameCreator.create());
            }

            NameCreator nc;
            var         typeFullName = typeRef.FullName;

            if (typeNames.TryGetValue(typeFullName, out nc))
            {
                return(nc.create());
            }

            var    fullName = elementType.FullName;
            string shortName;
            var    dict = prefix == "" ? fullNameToShortName : fullNameToShortNamePrefix;

            if (!dict.TryGetValue(fullName, out shortName))
            {
                fullName = fullName.Replace('/', '.');
                int index = fullName.LastIndexOf('.');
                shortName = index > 0 ? fullName.Substring(index + 1) : fullName;

                index = shortName.LastIndexOf('`');
                if (index > 0)
                {
                    shortName = shortName.Substring(0, index);
                }
            }

            return(addTypeName(typeFullName, shortName, prefix).create());
        }