2013-08-17 100 views
0

我试图JSON格式的字典字符串转换,见下图:字典里没有合适的拷贝构造函数

using namespace System::Web::Script::Serialization; 

... 

String ^data = "{Name: 'sherlock', Problem: 'deserialization'}"; 
JavaScriptSerializer ^serializer = gcnew JavaScriptSerializer(); 
Dictionary<String^, Object^> obj = serializer->Deserialize<Dictionary<String^, Object^>>(data); 

我得到一个错误,

class "System::Collections::Generic::Dictionary<System::String ^, System::Object ^>" has no suitable copy constructor 

我来自c#的新的C++/cli。我想我明白一个拷贝构造函数是,但我不知道为什么人们会在这种情况下是必要的,或者如何解决这个错误..

感谢

回答

4

你忘了^的字典引用自身。

变化:

Dictionary<String^, Object^> obj = 
      serializer->Deserialize<Dictionary<String^, Object^>>(data); 

到:

Dictionary<String^, Object^>^ obj = 
      serializer->Deserialize<Dictionary<String^, Object^>^>(data); 

注意,第三^之前obj以及(data)之前。

+0

谢谢,我仍然得到这些句柄的挂钩。我认为还需要另一个泛型T arg字典,这解决了这个问题。再次感谢! – Sherlock

+0

@Sherlock你是对的:) – Inisheer