gpt4 book ai didi

c# - 从 BindingExpression 获取源属性类型

转载 作者:行者123 更新时间:2023-11-30 14:59:31 25 4
gpt4 key购买 nike

我正在尝试找出绑定(bind)表达式的源属性类型。我想这样做是因为我想使用 UpdateSourceExceptionFilter提供比一般的“无法转换”更有用的错误消息。

在 .NET 4.5 中我使用 ResolvedSourceResolvedSourcePropertyName通过反射获取源属性类型,如下所示:

PropertyInfo sourceProperty = expr.ResolvedSource.GetType().GetProperty(expr.ResolvedSourcePropertyName);
Type propertyType = sourceProperty.PropertyType;

这很好用。然而,这两个 BindingExpression 属性都是在 .NET 4.5 中引入的,而我仍在使用 4.0(由于 Windows XP,无法真正更新)。

那么在 .NET 4.0 中是否有一种很好的方法来做到这一点?我考虑过使用反射获取内部 SourceItemSourcePropertyName 属性或仅使用私有(private) Worker 来获取这些值,但我宁愿避免访问内部/私有(private)属性(property)或领域(我认为这也需要我做一些关于信任的事情?有什么影响?)。

最佳答案

不太漂亮,但无法访问私有(private)方法:

string[] splits = expr.ParentBinding.Path.Path.Split('.');
Type type = expr.DataItem.GetType();
foreach (string split in splits) {
type = type.GetProperty(split).PropertyType;
}

因此,我们能够解析源属性。

关于c# - 从 BindingExpression 获取源属性类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671689/

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