Monotouch无法将System.Collections.Generic.Stack类型隐式转换为相同类型

时间:2011-03-11 19:30:09

标签: generics xamarin.ios monodevelop mscorlib

我在monotouch中使用通用的Stack类型(命名空间System.Collections.Generic)。 在一个单独的nunit项目中,只引用了monotouch包中的程序集,我正在扩展我的monotouch类并重新实现堆栈:

using System.Collections.Generic;
namespace Tests
{
public class MyExtendedClass : MyExtendableClass
    {
        public MyExtendedClass ()
        {
            m_myStackVariable = new Stack<string> (); 

给出了以下错误消息:

  

无法隐式转换类型   System.Collections.Generic.Stack<string>,以   System.Collections.Generic.Stack<string>

当我在Stack类型上尝试“转到基础”时,它会在程序集浏览器中显示mscorlib,它在System.Collections.Generic命名空间下不会保存Stack&lt;&gt;类似于System.dll在程序集浏览器中的类型。

任何人都知道会发生什么事吗?在这些项目中,同一名称空间中是否存在两个具有相同名称的类型?什么让我悲伤?

1 个答案:

答案 0 :(得分:0)

确保您的NUnit项目引用了MonoTouch核心库。尽管如此,有时即使这样也无法解决问题,具体取决于您的代码。

NUnit项目将在Mac上使用Mono库,因此返回Stack(T)的MonoTouch库无法转换为Mac上的堆栈(T)。

这个问题基本上使我无法进行单元测试,幸运的是使用“var”关键字可以绕过它,但这取决于你的情况。

你可以发布更多代码吗?可能有一种解决方法。