То, что вы там делаете, запрещено, Mvx может регистрировать такие инъекции с помощью открытых дженериков typeof(IFoo<>)
.
Вы можете делать все, что хотите, просто обернув поставщика GetLogFor
в реализации MvxLog<T>
и вызывает те же методы внутри:
public interface IMvxLog<T> : IMvxLog
{
}
public class MvxLog<T> : IMvxLog<T>
{
private readonly IMvxLog _logImplementation;
public MvxLog(IMvxLogProvider provider)
{
_logImplementation = provider.GetLogFor<T>();
}
public bool IsLogLevelEnabled(MvxLogLevel logLevel)
{
return _logImplementation.IsLogLevelEnabled(logLevel);
}
public bool Log(MvxLogLevel logLevel, Func<string> messageFunc, Exception exception = null, params object[] formatParameters)
{
return _logImplementation.Log(logLevel, messageFunc, exception, formatParameters);
}
}
, а затем вы просто регистрируете его:
Mvx.IoCProvider.RegisterType(typeof(IMvxLog<>), typeof(MvxLog<>));
и используете его как:
public LoginViewModel(IMvxLog<LoginViewModel> loggger)
{
_logger = logger;
}
HIH