对WPF中的私有导入属性的CA1811警告

时间:2012-12-04 05:40:44

标签: c# .net wpf properties mef

我有一个公共Controller类,我在其中使用以下属性

[Import]
private TransferRegionViewModel TransferRegionView { get; set; }

[Import]
private Lazy<IVoiceController> VoiceController { get; set; }

我收到了以下CA警告:

  

CA1811:Microsoft.Performance:'TransferController.VoiceController.set(Lazy)'似乎没有上游公共或受保护的呼叫者。

我正在使用VoicdeController属性:

VoiceController.Value.CallTransfer(phoneNumber.PhoneNumber, true);

我引用了这个 - Properties private set;,但不明白我是否需要设置内部或私有属性。

1 个答案:

答案 0 :(得分:4)

一起使用MEF和代码分析时,这是“正常”警告。

您的属性将由MEF容器通过反射在运行时设置,因此,没有任何属性设置器的调用,这可以由CA静态证明。唯一的方法是通过SuppressMessage属性

来取消此消息
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
[Import]
private Lazy<IVoiceController> VoiceController { get; set; }