[英]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.