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); }
public InvalidTypeName(MessageContext ctxt, QualifiedTypeName name, string message) : base(ctxt, Severity.Warning, "1020") { Name = name; Message = message; }
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; } }
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; }
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; }