将字典对象从经典ASP传递到C#

时间:2011-09-08 15:18:46

标签: c# com asp-classic

我从经典的asp中调用了一个C#com interop dll。

我想将名称值对发送到c#dll。

尝试在经典asp中使用字典对象,并在C#中使用相同的字典对象(scripting.runtime com reference)接受它。

但它给出了无效的过程调用或参数错误。

我从这个链接中获得了使用scripting.dictionary的想法 http://www.eggheadcafe.com/community/aspnet/2/10016705/is-there-any-way-to-pass-a-dictionary-object-to-c.aspx

可能是我遗漏了什么

问题

  1. 我错过了什么或是否有更好的方法来传递关键值 从Classic asp到C#。
  2. 我也在考虑使用这个库asp3tojson和 在C#中反序列化。这太复杂了吗?

2 个答案:

答案 0 :(得分:1)

我将它转换为JSON。至少要知道没有对象级互操作性问题,特别是在混合各种MS对象时。

答案 1 :(得分:1)

你好。在asp经典应用程序中可以使用 System.Collections.HashTable 以及mscorlib 中的许多其他内容)。
请尝试以下方法。希望有用。
Asp App:

Option Explicit
Dim Dictionary, objNetCom, i

Set Dictionary  = Server.CreateObject("System.Collections.HashTable")
Set objNetCom   = Server.CreateObject("MyTest.doTest")

With Dictionary
    For i = 65 To 90
        .Add Chr(i), i 
    Next
End With
Response.Write objNetCom.getDictType(Dictionary) 

Set Dictionary  = Nothing
Set objNetCom   = Nothing

a c#Com Visible:

using System;
using System.Collections;

namespace MyTest
{
    public class doTest
    {
        public string getDictType(Object tDict)
        {
            return String.Format("Type : \"{0}\", Count : {1}", ((Hashtable)tDict).GetType().ToString(), ((Hashtable)tDict).Count);
        }
    }
}