1.泛型代码示例
/// <summary>
/// 根据控件的Name获取控件对象
/// </summary>
/// <typeparam name="T">控件类型</typeparam>
/// <param name="controlName">Name</param>
/// <returns></returns>
public T GetControlObject<T>( string controlName)
{
try
{
Type type = this.GetType();
FieldInfo fieldInfo = type.GetField(controlName,
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.IgnoreCase);
if (fieldInfo != null)
{
T obj = (T)fieldInfo.GetValue(this);
return obj;
}
else
{
return default(T);
}
}
catch (Exception)
{
return default(T);
}
}
2.实战代码
public void Filter()
{
//hack20230407
strPipeIDS = CommWithPCs.Instance.filterPipeID.ToString();
char[] chars = strPipeIDS.ToCharArray();
for (int i = 0; i < strPipeIDS.Length; i++)
{
arPipeID[i] = int.Parse(chars[i].ToString());
}
if (CommWithPCs.Instance.filterPipeID != 0)
{
for (int i = 1; i < 7; i++)
{
if (i == arPipeID[0] || i == arPipeID[1] || i == arPipeID[2])
{
//string controlName =
$"pipe{CommWithPCs.Instance.filterPipeID}";
string controlName = $"pipe{i}";
var controlModel = GetControlObject(controlName);
controlModel.Visibility = Visibility.Collapsed;
}
}
}
}
public DataGridTextColumn GetControlObject(string controlName)
{
try
{
Type type = this.GetType();
System.Reflection.FieldInfo fieldInfo = type.GetField(controlName,
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.IgnoreCase);
if (fieldInfo != null)
{
DataGridTextColumn obj = (DataGridTextColumn)fieldInfo.GetValue(this);
return obj;
}
else
{
return default(DataGridTextColumn);
}
}
catch (Exception)
{
return default(DataGridTextColumn);
}
}