public interface ICommon
{
public string Test();
}
public class Common : ICommon
{
public string Test()
{
return "Common";
}
}
< /code>
Я хочу зарегистрировать его в ihost.
Если я напишу так (один из способов), он будет зарегистрирован: < /p>
services.TryAddScoped(typeof(ICommon), typeof(Common));
Если я напишу это так (два пути), это получит исключение: < /p>
var types = assembly.GetTypes().Where(t => !t.IsInterface && !t.IsAbstract);
foreach (var type in types)
{
var name = type.Name;
var interfaceType = type.GetInterfaces().ToList().Find(p => p.Name.Equals($"I{name}"));
if (interfaceType is null)
{
continue;
}
services.TryAddSingleton(interfaceType, type);
}
У меня есть общие классы: < /p> [code]public interface ICommon { public string Test(); }
public class Common : ICommon { public string Test() { return "Common"; } } < /code> Я хочу зарегистрировать его в ihost. Если я напишу так (один из способов), он будет зарегистрирован: < /p> services.TryAddScoped(typeof(ICommon), typeof(Common)); [/code]
Если я напишу это так (два пути), это получит исключение: < /p> [code]var types = assembly.GetTypes().Where(t => !t.IsInterface && !t.IsAbstract); foreach (var type in types) { var name = type.Name; var interfaceType = type.GetInterfaces().ToList().Find(p => p.Name.Equals($"I{name}")); if (interfaceType is null) { continue; } services.TryAddSingleton(interfaceType, type); } [/code]