我正在Visual Studio 2019(Professional)中创建自定义C#Windows窗体控件库(DLL)。我的控件有一个采用以下形式的属性(此属性旨在供使用DLL的应用程序访问):
public double Hello
{
get { throw new ApplicationException("Hi!"); }
}
((为了找出为什么会发生这种情况,我简化了该属性,使其仅引发异常,并且不执行其他任何操作。)
出于某种原因,如果我在调试模式下运行用户控件,则会引发异常-即使此代码中没有其他地方调用该属性! (IDE对此进行了确认-在其上方说“ 0个引用”)。为什么似乎无缘无故地调用了属性“ get”访问器?堆栈跟踪显示“ get”已由“ [外部代码]” ...
调用如果具有Visual Studio 2019,这应该很容易重现:在C#下创建一个新的“ Windows窗体控件库(.NET Framework)”项目,然后在解决方案资源管理器中右键单击“ UserControl1.cs”,然后单击“查看代码”,然后只需将上面的代码添加到类中即可。
我转载了您的问题。根据我的测试,我发现winformscontrollibary将
加载您在代码中设置的所有属性,因为它需要将它们加载到]中>
属性栏。类似于以下内容,如果您编写以下代码。
public partial class UserControl1: UserControl
{
public UserControl1()
{
InitializeComponent();
}
public double Hello
{
get { return 1.02; }
}
public int Number
{
get { return 1; }
}
}
因此,如果您编写代码,则抛出新的ApplicationException(“ Hi!”);在get方法中,它将引发异常。