如何将字典从Javascript传递到C#运行时组件?

时间:2013-04-01 16:38:26

标签: c# collections windows-runtime windows-store-apps winjs

我创建了一个C#Windows运行时组件,它具有一个接受IDictionary参数的公共静态方法。

public sealed class DictionaryTest
{
    public static void print(IDictionary<string, string> dict)
    {
    }
}

我正在从WinJS应用程序访问该库,我在default.js中调用此方法,如下所示:

var ps = new Windows.Foundation.Collections.PropertySet();
ps['testkey'] = "testvalue";
TestComponent.DictionaryTest.print(ps);

当我运行应用程序时,我得到一个“没有这样的接口支持”错误。 print()的intellisense显示它接受Windows.Foundation.Collections.IMap的参数,但我无法找到该集合。

如何将类似字体的字典从Javascript传递到print(IDictionary)?

编辑: 虽然@IAbstract提出了一个很好的观点,但我不能将其作为解决方案。我的约束是我无法修改print()方法。所以我需要能够将字符串的字典类型对象从javascript传递到print(IDictionary<string, string> dict)方法。

1 个答案:

答案 0 :(得分:0)

Windows.Foundation.Collections.PropertySet声明如下:

public sealed class PropertySet : Object,
    IPropertySet,
    IObservableMap<String, Object>,
    IDictionary<String, Object>,
    IEnumerable<KeyValuePair>

将值对象强制转换为字符串。您不能总是隐含地依赖Object.ToString()