如何在类中找到特定的元素/字段
本文关键字:元素 字段 | 更新日期: 2023-09-27 18:21:02
我有两个页面的应用程序。第一页主页,第二页是类和名称"链接"。我在主页上有按钮。"链接"中的字符串变量与按钮的名称相同。例如
class Links
{
public static string a1 = "data1";
public static string a2 = "data2";
public static string a3 = "data3";
}
//Main page
public partial class MainPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void allclickevents(object sender, RoutedEventArgs e)
{
Button x = (Button)sender;
string findthisname=x.Content.ToString();
//I need to find the string data of the same name in "Links" class. And show messagebox, for ex if button a2 messagebox shows "data2".
}
}
设计页面(Xaml页面):
<Button x:Name="a1" Content="a1" HorizontalAlignment="Left" Margin="260,48,0,0" VerticalAlignment="Top" Click="allclickevents"/>
<Button x:Name="a2" Content="a2" HorizontalAlignment="Left" Margin="360,48,0,0" VerticalAlignment="Top" Click="allclickevents"/>
<Button x:Name="a3" Content="a3" HorizontalAlignment="Left" Margin="460,48,0,0" VerticalAlignment="Top" Click="allclickevents"/>
所有按钮单击设置为allclickevents
方法的事件,我使用(按钮)。发件人并查找特定的按钮名称。只需要在Links类中找到相同的命名字符串数据。我需要在"Links"类中找到相同名称的字符串数据。并显示消息框,例如,如果按钮a2消息框显示data2
。请帮忙。
唯一的方法是通过反射,这是一个很好的指标,表明它不是解决整体问题的正确方法。
话虽如此,以下代码将做到这一点:
string data = (string) typeof(Links).GetField(findthisname).GetValue(null);
请参阅MSDN中的GetField
和SO,了解如何使用它访问静态成员。
要获得消息框,只需使用MessageBox.Show(data)
。
FieldInfo f_key = typeof(Links).GetField(p);
var o = f_key.GetValue(null);
这些代码应该可以工作,但如果你使用Dictionary,它会更容易,比如:
Dictionary<String,String> links = new Dictionary<string, string>();
links.Add("a1","data1");
links.Add("a2", "data2");
links.Add("a3", "data3");
当你使用它时:
links["ai"]
将返回"datai"