在问题中:Idiomatic way to write .NET interop function我找到了以下代码段:
(import '(System.Net HttpWebRequest NetworkCredential)
'(System.IO StreamReader))
当我启动REPL并输入:
一切都好。但是当我进入时:(import'(System.IO StreamReader))
(import'(System.Net HttpWebRequest))
(我不需要NetworkCredential功能)我得到:
My.ns=> (import '(System.Net HttpWebRequest))
Bad type
NullReferenceException Object reference not set to an instance of an object. cl
ojure.lang.Util.NameForType (D:\work\clojure-clr-1.4.1-fix\Clojure\Clojure\Lib\U
til.cs:729)
哦,我以前做过:
My.ns=> (System.Reflection.Assembly/LoadWithPartialName "System.Net")
#<RuntimeAssembly System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b
03f5f7f11d50a3a>
那我还需要做什么?谢谢你的帮助。
答案 0 :(得分:1)
这是1.4中的错误。它来自于不能正确处理可从多个组件访问的类型。在这种情况下,System.Net.HttpWebRequest
位于System
程序集中。在加载System.Net
程序集之前导入该类可以正常工作。加载System.Net
程序集后,可以从两个程序集访问HttpWebRequest
(感谢TypeForwardedTo
中的System.Net
属性)。在ClojureCLR 1.4.1中,处理不当。
解决方案:
System.Net
,要么导入HttpWebRequest
在这之前。