编辑方法 WPF |动态参数
Edit Method WPF | Dynamic Parameters
情况
我正在尝试为我的 WPF 应用程序创建一个编辑成员方法。
基本上,我的主 class 中有一个成员列表,我遍历该成员列表并找到具有匹配用户名参数的成员,这有效。
然后,一旦在系统中找到该用户名(因为会员需要使用有效的用户名登录),我想设置会员。"Whatever" paramater 为用户选择的任何参数使用用户为该参数输入的新内容在 gui 上进行编辑。
public void editMember(string Username, string parameter, string newEntry)
{
foreach (BaseMember bm in members)
{
if (Username == bm.username)
{
bm.[parameter] = newEntry;
}
}
问题
我不想做:
"member.club"和"member.firstname",或者"member.street",因为用户可以编辑的参数太多了,而且是冗长的"bad"代码。
如何在一行代码中完成此操作?因为 bm.[parameter] = newEntry;
行不通?
更多信息
如果我使用静态参数,此方法有效,例如,bm.memclub = newEntry;
但我希望参数是动态的。
您需要使用Reflection:
foreach (BaseMember bm in members)
{
if (Username == bm.username)
{
Type type = bm.GetType();
PropertyInfo prop = type.GetProperty(parameter);
prop.SetValue (bm, newValue, null);
}
}
反射提供对象(Type 类型)来描述您当前的 object.You 可以使用反射来动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。
情况
我正在尝试为我的 WPF 应用程序创建一个编辑成员方法。
基本上,我的主 class 中有一个成员列表,我遍历该成员列表并找到具有匹配用户名参数的成员,这有效。
然后,一旦在系统中找到该用户名(因为会员需要使用有效的用户名登录),我想设置会员。"Whatever" paramater 为用户选择的任何参数使用用户为该参数输入的新内容在 gui 上进行编辑。
public void editMember(string Username, string parameter, string newEntry)
{
foreach (BaseMember bm in members)
{
if (Username == bm.username)
{
bm.[parameter] = newEntry;
}
}
问题
我不想做:
"member.club"和"member.firstname",或者"member.street",因为用户可以编辑的参数太多了,而且是冗长的"bad"代码。
如何在一行代码中完成此操作?因为 bm.[parameter] = newEntry;
行不通?
更多信息
如果我使用静态参数,此方法有效,例如,bm.memclub = newEntry;
但我希望参数是动态的。
您需要使用Reflection:
foreach (BaseMember bm in members)
{
if (Username == bm.username)
{
Type type = bm.GetType();
PropertyInfo prop = type.GetProperty(parameter);
prop.SetValue (bm, newValue, null);
}
}
反射提供对象(Type 类型)来描述您当前的 object.You 可以使用反射来动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。