当前位置: 首页 > 编程语言 > C#

当属性类型未知时,通过反射创建属性访问者的委托Share

时间:2023-04-10 11:35:46 C#

当属性类型未知时,通过反射创建属性访问者的委托在.NET2.0(使用C#3.0)中,当当编译时不知道其类型时,如何为通过反射获得的属性访问器创建委托?例如,如果我有一个int类型的属性,我可以这样做:Funcgetter=(Func)Delegate.CreateDelegate(typeof(Func),this,property.GetGetMethod(true));动作设置器=(Action)Delegate.CreateDelegate(typeof(Action),this,property.GetSetMethod(true));但是如果我在编译时不知道该属性是什么类型,我不知道该怎么做。你需要的是:Delegategetter=Delegate.CreateDelegate(typeof(Func).MakeGenericType(property.PropertyType),this,property.GetGetMethod(true));委托设置器=Delegate.CreateDelegate(typeof(Action).MakeGenericType(property.PropertyType),this,property.GetSetMethod(true));但是,如果您这样做是为了提高性能,您仍然会做空,因为您需要使用动态循环DynamicInvoke()。您可能想研究元编程以编写包含/返回对象的包装器。或者查看HyperDescriptor来为您执行此操作。以上就是C#学习教程:属性类型未知时,通过反射创建属性访问者的委托,分享所有内容。如果对你有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络合集,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处: