大佬教程收集整理的这篇文章主要介绍了c# – TypeDescriptor Peformance,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我打算将该方法用于特定的动态绑定目的.
调用该方法如下所示:GetProperty(contract,“Person.Contact.Phonenumber”);
public String GetProperty(object obj,String Name) { String[] index = name.Split('.'); object result = null; for (int i = 0; i < index.Length - 1; i++) { result = TypeDescriptor.GetProperties(obj).Find(index[i],truE).GetValue(obj); if (result == null) return null; obj = result; } PropertyDescriptor pd = TypeDescriptor.GetProperties(result).Find(index.Last(),truE); return (String)pd.GetValue(result); }
谢谢!
dynamic obj = ... String name = obj.Person.Contract.Phonenumber;
动态实现在内部进行了优化,因此每次都不会进行大量的反射 – 它只是按类型解析.
至于“有多快”,你需要对它进行分析 – 但是,常规反射实现基于PropertyInfo,而且速度并不快.足够快,可以临时使用,但是在紧密的循环中,不是那么好.
如果你想要优化和更灵活,而不是使用动态(在编译时需要名称),那么可能是FastMember;这有基于类型和基于实例的API,并且是有意优化的;用于任意属性获取的@L_874_21@:
var acc = ObjectAccessor.Create(obj); String propName = "Phonenumber"; var value = acc[propName];
在那篇文章中,我还提到了HyperDescriptor,这是一个使用PropertyDescriptor API的先前实现(但已经过优化) – 但是,除非你需要PropertyDescriptor实现,否则我认为没有必要强制使用它.
以上是大佬教程为你收集整理的c# – TypeDescriptor Peformance全部内容,希望文章能够帮你解决c# – TypeDescriptor Peformance所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。