首页 / C# / c# – 创建数组get方法的委托失败
c# – 创建数组get方法的委托失败
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 创建数组get方法的委托失败,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1159字,纯文字阅读大概需要2分钟。
内容图文
![c# – 创建数组get方法的委托失败](/upload/InfoBanner/zyjiaocheng/761/d52a4f9fdd6a420dabaf3870e08f11cb.jpg)
尝试创建一个访问数组的委托,我得到一个ArgumentException说该方法无法绑定.
Cannot bind to the target method because its signature or security transparency is not compatible with that of the delegate type.
重现此代码的最小代码量如下:
var method = typeof(string[,]).GetMethod("Get");
var func = Delegate.CreateDelegate(typeof(Func<int, int, string>), new string[4,5], method);
虽然默认情况下Get方法是不可见的,但第一行确实有效并找到了正确的方法.当签名匹配时,我认为该异常与Get方法是安全透明的事实有关,而Func< ;,>可能不是.如何确定委托类型是否安全透明以及如何解决此问题?
解决方法:
我认为你发现了一个CLR错误.有两个根本不同的代码块绑定委托,BindToMethodInfo和BindToMethodName.由于它们内部发生的缓存,它们很难解开,我猜测那里有一些错误,并且与在.NET中特别处理数组这一事实有关.
以前没有注意到这一点在某种程度上是可以解释的,当然每个试图做你所做的事情的人都使用记录在案的Array.GetValue()方法.像这样:
var method = typeof(string[,]).GetMethod("GetValue",
new Type[] { typeof(int), typeof(int) });
var func = Delegate.CreateDelegate(typeof(Func<int, int, object>),
new string[4, 5], method);
哪个工作正常.您可以在connect.microsoft.net上发布反馈,以听取专家的意见,但不要指望快速修复错误.
内容总结
以上是互联网集市为您收集整理的c# – 创建数组get方法的委托失败全部内容,希望文章能够帮你解决c# – 创建数组get方法的委托失败所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。