C# 在类库中使用MEF导入时接收空异常;对象引用未设置为对象的实例";?

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

在c#类库项目中尝试使用import MEF范例时,我遇到了一个奇怪的问题。基本上我有另一个DLL,它有IDevicePreferences的实现。调用DeviceReferences.Callsign时,我收到以下异常:

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
它必须是我正在使用的版本,我将对此进行研究。再次感谢。