我想将 dll 中的类注册到 IOC,但是当我从 IOC 获取实例时,它返回一个空值。如Version_2下面的代码。但是如果我使用 Version_1,它将返回一个正确的实例。
代码如下:
private static void RegistRepository(ServiceCollection services)
{
//Version_1
//var assembly = typeof(IDataProvider).Assembly;
//Version_2
var filePath = Directory.GetFiles(Directory.GetCurrentDirectory(), Constants.DataAccess_Dll).FirstOrDefault();
var assembly = Assembly.LoadFile(filePath);
var repositoryList = assembly.GetTypes().Where(x => x.IsClass && x.BaseType.Name == typeof(RepositoryBase).Name).ToList();
foreach (var repository in repositoryList)
{
var interfaceType = repository.GetInterfaces().FirstOrDefault();
services.AddSingleton(interfaceType, repository);
}
}
我得到实例的代码如下:
var services = ConfigurationService(configuration);
var provider = services.BuildServiceProvider();
var configurationService = provider.GetService<IConfigurationRepository>();
我想知道这两个版本有什么区别,请。