Exemplo n.º 1
0
        public override object GetType(EvaluationContext ctx, string name, object[] typeArgs)
        {
            switch (name)
            {
            case "System.Diagnostics.DebuggerTypeProxyAttribute":
                return(typeof(DebuggerTypeProxyAttribute));
            }

            string fullName = QualifiedTypeName.GetName(name, typeArgs);

            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
            {
                Type type = assembly.GetType(fullName, false, false);
                if (type != null)
                {
                    return(type);
                }
            }

            return(null);
        }
Exemplo n.º 2
0
 public InvalidTypeName(MessageContext ctxt, QualifiedTypeName name, string message)
     : base(ctxt, Severity.Warning, "1020")
 {
     Name = name;
     Message = message;
 }
Exemplo n.º 3
0
 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;
     }
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 private QualifiedTypeName QualifiedTypeNameFromCCIType(CCI.TypeNode type)
 {
     while (type.Template != null)
         type = type.Template;
     var qtn = default(QualifiedTypeName);
     if (!cciQualifiedTypeNameCache.TryGetValue(type, out qtn))
     {
         qtn = new QualifiedTypeName
             (StrongAssemblyNameFromCCIAssembly(type.DeclaringModule.ContainingAssembly),
              TypeNameFromCCIType(type));
         cciQualifiedTypeNameCache.Add(type, qtn);
     }
     return qtn;
 }