gpt4 book ai didi

c# - 如何安全地访问对象的属性

转载 作者:行者123 更新时间:2023-11-30 22:16:27 25 4
gpt4 key购买 nike

我有一个 WinForms 应用程序,其中包含几个映射到同一个处理程序的菜单项命令。我使用菜单项的 Tag 属性来确定处理程序的行为方式。

问题是,处理程序的sender 参数是object 类型。那么如何读取对象的 Tag 属性呢?

我知道我可以将 sender 强制转换为我的菜单项的类型,但是如果我想要一个按钮或其他控件映射到同一个处理程序怎么办?是否有通用的方法从发送方的任何对象读取 Tag 属性?

这是我目前所拥有的。它似乎工作。但是有没有更精简的方式呢?

private void Header_Click(object sender, EventArgs e)
{
dynamic ctrl = sender as dynamic;
if (ctrl != null && sender.GetType().GetProperty("Tag") != null)
{
// Go ahead and reference ctrl.Tag
}
}

最佳答案

您可以将 is 转换为所有控件的父类型,而不是特定的子控件。

Control ctrl = sender as Control;
if (ctrl != null)
MessageBox.Show(ctrl.Tag.ToString());

关于c# - 如何安全地访问对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17382972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com