c# – 属性Lambda表达式获得额外的转换(p => p.Property)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 属性Lambda表达式获得额外的转换(p => p.Property),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1011字,纯文字阅读大概需要2分钟。
内容图文
![c# – 属性Lambda表达式获得额外的转换(p => p.Property)](/upload/InfoBanner/zyjiaocheng/784/e44185a7f24f4691ab1f4035993800cb.jpg)
我有一个问题,在某些情况下(似乎是属性类型是bool)lambda表达式用于引用属性.我用它来得名;问题是有时候表达式被修改为具有额外的Convert()函数.
例如
GetPropertyName<TSource>(Expression<Func<TSource, object>> propertyLambda) {...}
var str = GetPropertyName<MyObject>(o=>o.MyBooleanProperty);
发生了什么事情,propertyLambda看起来像Convert(o.MyBooleanProperty)而不是我期望的o.MyBooleanProperty.
解决方法:
转换是添加的,因为o.MyBooleanProperty是一个bool,但结果必须是一个对象.如果你在源对象类型和结果类型中使你的方法都是通用的,那么就没有转换:
GetPropertyName<TSource, TResult>(Expression<Func<TSource, TResult>> propertyLambda)
不幸的是,这意味着您必须明确指定TResult:
GetPropertyName<MyObject, bool>(o => o.MyBooleanProperty)
如果你不想这样做,你必须找到一些方法来推断MyObject,或者避免需要它.
例如,如果当前对象是MyObject(并且您在实例方法中),则可以更改代码以使用Func< TResult>:
GetPropertyName(() => this.MyBooleanProperty)
或者您可以包含另一个TSource类型的参数,它将帮助您推断出类型:
GetPropertyName(myObject, o => o.MyBooleanProperty)
内容总结
以上是互联网集市为您收集整理的c# – 属性Lambda表达式获得额外的转换(p => p.Property)全部内容,希望文章能够帮你解决c# – 属性Lambda表达式获得额外的转换(p => p.Property)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。