C# 在类库中使用MEF导入时接收空异常;对象引用未设置为对象的实例";?
在c#类库项目中尝试使用import MEF范例时,我遇到了一个奇怪的问题。基本上我有另一个DLL,它有IDevicePreferences的实现。调用DeviceReferences.Callsign时,我收到以下异常:C# 在类库中使用MEF导入时接收空异常;对象引用未设置为对象的实例";?,c#,.net,dll,mef,C#,.net,Dll,Mef,在c#类库项目中尝试使用import MEF范例时,我遇到了一个奇怪的问题。基本上我有另一个DLL,它有IDevicePreferences的实现。调用DeviceReferences.Callsign时,我收到以下异常: System.NullReferenceException: 'Object reference not set to an instance of an object.' devicePreferences was null. 我将这个类库项目嵌入到一个DLL中,这个D
System.NullReferenceException: 'Object reference not set to an instance of an object.'
devicePreferences was null.
我将这个类库项目嵌入到一个DLL中,这个DLL在我的另一个项目中使用。换句话说,我试图在类库中通过在标准C#.Net项目中实例化一个WeatherClient对象来实现MEF,该项目具有DLL。(我的项目->我的类库->idevicepreferencesdll)
有趣的是,我能够在我的项目中实现IDevicePreferences接口(我也有用于该接口的DLL),而不会出现问题。但我无法从类库/WeatherClient类内部使其工作
下面是WeatherClient类:
公共类WeatherClient
{
[导入(类型(IDevicePreferences))]
公共理念参考、设备参考;
公共WeatherClient(字符串服务器IP,int端口)
{
this.serverIp=serverIp;
this.port=端口;
System.Diagnostics.Debug.WriteLine(“callsign:+DeviceReferences.callsign”);
}
}
关于我做错了什么有什么想法吗?你如何创建/导入WeatherClient?@Vernou我正在使用一种简单的构造函数方法:
WeatherClient WeatherClient=new WeatherClient(serverIp,port)
这有问题吗?是的,因为你没有调用MEF。字段DeviceReferences
未填充且为空。最后,DeviceReferences.Callsign
抛出NullReferenceException
。您需要在WeatherClient实例上调用CompositionContainer.ComposeParts
来填充字段DeviceReferences
。明白了谢谢,刚刚开始学习MEF.hmm我只看到Composite(CompositionBatch)代码>非ComposeParts
它必须是我正在使用的版本,我将对此进行研究。再次感谢。