gpt4 book ai didi

.net - 获取类属性名称

转载 作者:行者123 更新时间:2023-12-04 01:53:29 25 4
gpt4 key购买 nike

我的 winform 应用程序使用数据绑定(bind)收集数据。一切看起来都很好,除了我必须链接 房产 文本编辑 使用字符串:

Me.TextEdit4.DataBindings.Add(New System.Windows.Forms.Binding("EditValue", Me.MyClassBindingSource, "MyClassProperty", True))



这很好,但如果我更改类的属性名称,编译器显然不会警告我。

我希望能够通过反射获取属性名称但我不知道如何指定我想要的属性名称(我只知道如何在类的所有属性之间进行迭代)

任何的想法?

最佳答案

如果您使用的是 C# 3.0,则有一种方法可以动态获取属性名称,而无需对其进行硬编码。

private string GetPropertyName<TValue>(Expression<Func<BindingSourceType, TValue>> propertySelector)
{
var memberExpression = propertySelector.Body as MemberExpression;
return memberExpression != null
? memberExpression.Member.Name
: string.empty;
}

在哪里 BindingSourceType是您的数据源对象实例的类名。

然后,您可以使用 lambda 表达式以强类型方式选择要绑定(bind)的属性:
this.textBox.DataBindings.Add(GetPropertyName(o => o.MyClassProperty),
this.myDataSourceObject,
"Text");

它将允许您安全地重构您的代码,而不会破坏您所有的数据绑定(bind)内容。但就性能而言,使用表达式树与使用反射相同。

前面的代码非常丑陋且未经检查,但您明白了。

关于.net - 获取类属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/152250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com