2012-11-17 35 views
0

我想把我得到的对象,stackVal,并将其转换为对象类型堆栈,这是我的代码,但它不工作,我不知道任何其他方式。如果有人可以帮忙,请不胜感激!将一个对象转换为堆栈类型


 object stackVal; 
     Stack<Event> eventStack = new Stack<Event>(); 
     CultureInfo provider = new CultureInfo("fr-FR"); 

      if (phoneAppSer.State.ContainsKey("STACK")) 
      { 
       if (phoneAppSer.State.TryGetValue("STACK", out stackVal)) 
       { 

       eventStack = Convert.ChangeType(stackVal, typeof(EventStack),provider); 

       } 
      } 
+0

什么是状态?我会假设它是一个词典。如果X *最初是* an * Event *(您可以发布您的Event类的代码),那么您应该能够将对象'stackVal'转换为事件(因为它最初是一个事件)。如果你从这个'State'字典*中得到的东西最初并不是一个事件,那么你必须创建一个'new Event()',并手动地选择性地将'stackVal'对象的信息传递给这个事件。尽管如此,你必须知道*首先要做什么*'stackVal'。 – Jason

+1

你怎么知道它不工作?你有例外吗?如果是这样,细节是什么? – slugster

+0

这是我收到 错误\t \t 1无法隐式转换型“对象”为“System.Collections.Generic.Stack ”的误差。存在明确的转换(你是否缺少演员?) – user1271792

回答

0

StackEvent和通用型堆栈是不一样的类型。您正尝试将来自类型为EventStack的Convert的响应分配给类型为Stack的变量。编译器暗示你应该这样做:

eventStack = (Stack<Event>) Convert.ChangeType(stackVal, typeof(EventStack),provider); 
相关问题