예제 #1
0
        private static Type LookUpType(string typeName)
        {
            Type       type       = null;
            StackTrace stackTrace = new StackTrace();
            Assembly   assembly   = null;

            foreach (StackFrame stackFrame in stackTrace.GetFrames())
            {
                Assembly assembly2 = stackFrame.GetMethod().DeclaringType.GetTypeInfo().Assembly;
                if (assembly2 != assembly)
                {
                    assembly = assembly2;
                    type     = assembly.GetType(typeName);
                    if (type == null)
                    {
                        type = FaultInjectionTrace.CheckReferencedAssemblies(assembly, typeName, 0);
                    }
                    if (type != null)
                    {
                        break;
                    }
                }
            }
            return(type);
        }
예제 #2
0
        private static Type CheckReferencedAssemblies(Assembly assembly, string typeName, int depth)
        {
            Type type = null;

            foreach (AssemblyName assemblyRef in assembly.GetReferencedAssemblies())
            {
                Assembly assembly2 = Assembly.Load(assemblyRef);
                type = assembly2.GetType(typeName);
                if (type != null)
                {
                    break;
                }
                if (depth > 0)
                {
                    type = FaultInjectionTrace.CheckReferencedAssemblies(assembly2, typeName, depth--);
                    if (type != null)
                    {
                        break;
                    }
                }
            }
            return(type);
        }