private IEnumerable <string> LoadLinqBaseTypes() { var linqBaseRepositoryTypes = new List <string>(); if (!string.IsNullOrWhiteSpace(ProjectPath)) { var activeConfig = SolutionInfo.GetActiveConfiguration() ?? "debug"; var assemblyName = this.GetAssemblyName(); if (!string.IsNullOrWhiteSpace(assemblyName)) { var bin = Path.Combine(Path.GetDirectoryName(ProjectPath), "bin", activeConfig); var path = Path.Combine(bin, assemblyName + ".dll"); if (File.Exists(path)) { _tempBin = new DirectoryInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Coddee", "CoddeeTools", "tempBin", Guid.NewGuid().ToString())); if (!_tempBin.Exists) { _tempBin.Create(); } foreach (var file in _tempBin.GetFiles()) { file.Delete(); } foreach (var file in Directory.GetFiles(bin)) { File.Copy(file, Path.Combine(_tempBin.FullName, Path.GetFileName(file))); } var assembly = Assembly.ReflectionOnlyLoadFrom(Path.Combine(_tempBin.FullName, assemblyName + ".dll")); AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += ReflectionOnlyAssemblyResolve; foreach (var type in assembly.GetTypes()) { if (type.IsGenericType && type.BaseType.GetGenericTypeDefinition().FullName == typeof(CRUDLinqRepositoryBase <, , ,>).FullName || type.IsGenericType && type.BaseType.GetGenericTypeDefinition().FullName == typeof(ReadOnlyLinqRepositoryBase <, , ,>).FullName || type.IsGenericType && type.BaseType.GetGenericTypeDefinition().FullName == typeof(LinqRepositoryBase <, , ,>).FullName || type.IsGenericType && type.BaseType.GetGenericTypeDefinition().FullName == typeof(LinqRepositoryBase <,>).FullName || type.IsGenericType && type.BaseType.GetGenericTypeDefinition().FullName == typeof(LinqRepositoryBase <>).FullName) { linqBaseRepositoryTypes.Add(type.Name); } } AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= ReflectionOnlyAssemblyResolve; } } } return(linqBaseRepositoryTypes); }