コード例 #1
0
        public bool PrimTryResolve(Global global, out AssemblyDef assemblyDef, out TypeDef typeDef, out MemberDef memberDef)
        {
            if (!DefiningType.PrimTryResolve(global, out assemblyDef, out typeDef))
            {
                memberDef = null;
                return(false);
            }

            memberDef = typeDef.ResolveMember(Signature);
            return(memberDef != null);
        }
コード例 #2
0
        public override TypeStyle Style(RootEnvironment rootEnv)
        {
            var assembly = default(AssemblyDef);
            var type     = default(TypeDef);

            if (name.PrimTryResolve(rootEnv.Global, out assembly, out type))
            {
                return(type.Style);
            }
            else
            {
                throw new InvalidOperationException("unable to resolve type");
            }
        }
コード例 #3
0
ファイル: Validity.cs プロジェクト: tralivali1234/IL2JS
        public bool ExtraUsedType(QualifiedTypeName name)
        {
            var assemblyDef = default(AssemblyDef);
            var typeDef     = default(TypeDef);

            if (name.PrimTryResolve(Global, out assemblyDef, out typeDef))
            {
                return(typeDef.MarkAsUsed(this, assemblyDef));
            }
            return(false);
        }
コード例 #4
0
ファイル: PESaver.cs プロジェクト: tralivali1234/IL2JS
 private PE.Row TypeDefOrRefRowFromQualifiedTypeName(DllSaveContext ctxt, QualifiedTypeName name)
 {
     if (name.Assembly.Equals(ctxt.AssemblyName))
     {
         var assemblyDef = default(AssemblyDef);
         var typeDef     = default(TypeDef);
         if (!name.PrimTryResolve(rootEnv.Global, out assemblyDef, out typeDef))
         {
             throw new InvalidOperationException("no such type");
         }
         return(TypeDefRowFromTypeDef(ctxt, typeDef));
     }
     else
     {
         var row      = default(PE.TypeRefRow);
         var resScope = default(PE.Row);
         if (name.Type.IsNested)
         {
             resScope = TypeDefOrRefRowFromQualifiedTypeName(ctxt, name.Outer());
         }
         else
         {
             resScope = AssemblyNameToAssemblyRefRow(ctxt, name.Assembly);
         }
         if (!ctxt.QualifiedTypeNameToRowCache.TryGetValue(name, out row))
         {
             row = new PE.TypeRefRow
             {
                 ResolutionScope = { Value = resScope },
                 TypeName        = { Value = name.Type.Types[name.Type.Types.Count - 1] },
                 TypeNamespace   = { Value = name.Type.Namespace }
             };
             ctxt.QualifiedTypeNameToRowCache.Add(name, row);
         }
         return(row);
     }
 }