我在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在程序集浏览器中的类型。
任何人都知道会发生什么事吗?在这些项目中,同一名称空间中是否存在两个具有相同名称的类型?什么让我悲伤?
答案 0 :(得分:0)
确保您的NUnit项目引用了MonoTouch核心库。尽管如此,有时即使这样也无法解决问题,具体取决于您的代码。
NUnit项目将在Mac上使用Mono库,因此返回Stack(T)的MonoTouch库无法转换为Mac上的堆栈(T)。
这个问题基本上使我无法进行单元测试,幸运的是使用“var”关键字可以绕过它,但这取决于你的情况。
你可以发布更多代码吗?可能有一种解决方法。