Обновление:MEF не предоставляющий объект
Это проект плагина mvc с использованием MEF для получения контроллеров и действий во время выполнения. http://www.fidelitydesign.net/?p=104
Я добавил новый проект, и в своем классе я добавил экспорт типа, который уже составлен.
[Export(typeof(IController)), ExportMetadata("Name", "Clocks")]
public class ClocksController : Controller
{
public XmlActionResult Index()
{
var p = DeviceLogic.GetUnassigned;
}
[Import(typeof(DeviceLogic))]
DeviceLogic DeviceLogic { get; set; }
}
Это получает состоит в другом проекте:
[Export]
public class ImportControllerFactory : DefaultControllerFactory
{
[ImportMany]
private IEnumerable<PartFactory<IController, IControllerMetadata>> ControllerFactories;
}
Application Start
[ImportMany]
private IEnumerable<ImportControllerFactory> ControllerFactories;
фабрики Контроллер имеет нулевое значение, пока я на самом деле не составляют части
container.ComposeParts(this);
то будет работать отлично , поэтому я решил попробовать и подражать этому, чтобы получить devicelogic, чтобы появиться в проекте, у которого возникли проблемы.
Я создал интерфейс emptry (IEmpty) для тестирования и попытался это:
[Export(typeof(IEmpty))]
public class RequestProcessor : IEmpty
{
[Import(typeof(DeviceLogic))]
DeviceLogic DeviceLogic { get; set; }
}
и в моем начале applciation добавил
[ImportMany]
private IEnumerable<IEmpty> TestMef;
Это наполненный один экземпляр после композиции, так что похоже, сработало. Мой вопрос в том, есть ли у кого-нибудь какие-либо предложения относительно того, почему devicelogic имеет значение null в requestprocessor, но не в clocksController.
Не может добавлять детали, где вы создаете каталог (ы) и контейнер, а также код для композиции DataTransfer? Также есть типы в одной сборке? –