private T CreateInstance <T>() { T ret = default(T); IResolvePolicy policy = ResolvePolicyFactory.GetPolicy(); bool isFound = false; Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (var item in assemblies) { Type[] types = item.GetTypes(); foreach (var type in types) { if (policy.IsInstanceOf <T>(type)) { ret = (T)Activator.CreateInstance(type); isFound = true; break; } } if (isFound) { break; } } return(ret); }