Я пытаюсь обновить последний пакет Autofa c до 5.2.0
, но не очень успешно из-за изменений интерфейса,
From (Autofac 4.9.4
)
public static class ResolutionExtensions
{
public static bool TryResolve<T>(this IComponentContext context, out T instance);
}
Кому (Autofac 5.2.0
)
public static class ResolutionExtensions
{
public static bool TryResolve<T>(this IComponentContext context, out T instance)
where T : class;
}
Пакет ServiceStack имеет интерфейс IContainerAdapter (ServiceStack.Interfaces 5.8.0
)
public interface IResolver
{
T TryResolve<T>();
}
public interface IContainerAdapter : IResolver
{
T Resolve<T>();
}
Мой AutofacIocAdapter реализует этот IContainerAdapter
public class AutofacIocAdapter : IContainerAdapter
{
public T TryResolve<T>()
{
if (m_Container.TryResolve<Autofac.ILifetimeScope>(out var scope) &&
scope.TryResolve<T>(out var scopeComponent))
{
return scopeComponent;
}
if (m_Container.TryResolve<T>(out var component))
{
return component;
}
return default(T);
}
}
Но после обновления произошла ошибка компиляции Autofa c
Error CS0452 The type 'T' must be a reference type in order to use it as parameter 'T' in the generic type or method 'ResolutionExtensions.TryResolve<T>(IComponentContext, out T?)'
Есть предложения по разрешению?