C# 为什么我在';我只是设置了一个控件';s属性的格式为';谁的构造函数?
我有一个简单的WinForms解决方案,其中有一个包含PropertyGrid的表单。在窗体的构造函数中,我设置propertyGrid的选定对象:C# 为什么我在';我只是设置了一个控件';s属性的格式为';谁的构造函数?,c#,.net,C#,.net,我有一个简单的WinForms解决方案,其中有一个包含PropertyGrid的表单。在窗体的构造函数中,我设置propertyGrid的选定对象: public FormSettings() { InitializeComponent(); pgMisc.SelectedObject = Settings.Current; } 我通过代码分析得到了这个警告: 警告1 CA2122:Microsoft.Security:'FormSet
public FormSettings()
{
InitializeComponent();
pgMisc.SelectedObject = Settings.Current;
}
我通过代码分析得到了这个警告:
警告1 CA2122:Microsoft.Security:'FormSettings.FormSettings()'
调用具有
链接需求。打这个电话,,
“PropertyGrid.SelectedObject.set(object)”间接暴露于
用户代码。查看以下调用堆栈,这些调用堆栈可能会公开
规避安全保护:->“FormSettings.FormSettings()”->'FormSettings.FormSettings()'
我做错了什么?如果我没有做错什么,有没有办法禁用此警告。相关:另请参阅我不明白。在窗体的构造函数中设置控件的属性不安全?那我怎么设置呢?在运行一次计时器事件或其他事件中?了解FxCop的功能非常重要。它把你的鼻子摩擦到程序员一直忽略的非常模糊的细节上。与此类似,这是不受信任的代码获取对设置类的引用的一种方式。你要做的是首先确定它是否重要。您是否对代码进行安全审查?你真的让不可信的代码在你的Winforms程序中运行过吗?FxCop不太聪明,无法自行解决的重要细节。这两个问题的99%答案都是“不”。所以你说“谢谢你提醒我”,然后关掉警告。好的,我明白了。但是,出于好奇,在构造函数中设置对象属性的安全方法是什么?