[英]C# Get the name of an object without knowing its Type
private void function(object sender, EventArgs e)
是否可以在不使用变量的情况下获取名称?
if(sender.getType().Name == "Button") {
Button btn = sender as Button;
ObjName = btn.Name
}
if(sender.getType().Name == "CheckBox") {
CheckBox cbx= sender as CheckBox;
ObjName = cbx.Name
}
我有一个可以处理许多不同对象类型的函数,而我唯一需要的就是Name。
只需将其转换为基本类型Control
var name = ((Control)sender).Name
另外,如果基本类型不同,则可以按以下方式反映:
private void function(object sender)
{
if (sender != null && sender.GetType().GetProperty("Name") != null)
{
var val = sender.GetType().GetProperty("Name").GetValue(sender);
}
}
如果不能使用通用基本类型,例如同时处理WinForms和WPF中的项目,则可以使用反射检查该项目是否具有name属性,然后是否确实返回该值。 。
public string GetNameIfExists(dynamic item)
{
if (item.GetType().GetProperty("Name") != null)
{
return item.Name;
}
return null;
}
该模式比检查类型名称更常见:
var btn = sender as button;
if (btn != null) // it's a button
{
//...
return;
}
var chkbx = sender as checkbox;
if (chkbx != null) // it's a checkbox
{
//...
return;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.