1
У меня есть то, что казалось прямым экспортом MEF.Перехватчики MEF и EF
[Export(typeof(IDbCommandInterceptor))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class LoggingCommandInterceptor : IDbCommandInterceptor
{
[Import]
private ILogging _ILogger;
public void NonQueryExecuting(
DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
{
Log(command, interceptionContext);
}
private void Log<TResult>(
DbCommand command, DbCommandInterceptionContext<TResult> interceptionContext)
{
if (!interceptionContext.IsAsync)
{
_ILogger.LogWarn("Non-async command used: {0}", command.CommandText);
}
else
_ILogger.LogTrace("command used: {0}", command.CommandText);
}
ect.....
Затем провод до
public class EFConfiguration : DbConfiguration
{
public EFConfiguration()
{
AddInterceptor(new LoggingCommandInterceptor());
}
}
Так что вопрос является импорт [Ilogging] в LoggingCommandInterceptor всегда NULL его никогда не заполнены, когда я просматриваю состав containter я вижу экспорт зарегистрирован правильно, так что я Я потерял, почему мой Импорт не удовлетворен.
Если вы вручную создаете экземпляр класса LoggingCommandInterceptor, то у MEF никогда не будет возможности удовлетворить любые импортные ... вы должны разрешить MEF создавать экземпляры любых классов, которые вы хотите удовлетворить. – BenjaminPaul
@BenjaminPaul, спустившись по этой дороге, меняю EFConfiguration на этот [Import] IDbCommandInterceptor _mefInterceptor; public EFConfiguration() { AddInterceptor (_mefInterceptor); } Еще не повезло – Nrm101