底部的代碼來自正在工作 WPF示例應用程序使用Autofac進行依賴注入。 我想轉換爲最新版本的MEF。我還安裝了NuGet軟件包CommonServiceLocator(V. 1.3)和Prism.Core,Prism.Mef和Prism.Wpf(全部6.1)。 當我做MEF可以解析返回接口的Func委託嗎?
var provider = ServiceLocator.Current.GetInstance<FriendDataProvider>();
我得到一個ActivationException從FriendDataProvider的構造函數的「FUNC。」聲明。 MEF能做到這一點嗎?如果是,需要什麼屬性聲明?
[Export]
public class FriendDataProvider
{
private readonly Func<IDataService> _dataServiceCreator;
[ImportingConstructor]
public FriendDataProvider(Func<IDataService> dataServiceCreator) // <= DI ERROR
{
_dataServiceCreator = dataServiceCreator;
}
public void DoSomething()
{
using (var service = _dataServiceCreator()) // Factory
{ }
}
}
[Export(typeof(IDataService))]
public class DataService : IDataService
{
public ClassA GetSomething()
{
return new ClassA();
}
public void Dispose()
{ }
}
public interface IDataService : IDisposable
{
ClassA GetSomething();
}
public class ClassA
{ }
我可能要深入挖掘生命週期管理,但使用ExportFactory&CreateExport()使代碼運行正常爲止。非常感謝您的幫助! – ChrisK