Monotouch 无法将类型 System.Collections.Generic.Stack 隐式转换为相同类型
我在 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
到System.Collections.Generic.Stack
当我尝试在 Stack 类型上“转到基础”时,它在程序集浏览器中向我显示 mscorlib,而在它的 System.Collections.Generic 命名空间下却没有显示 mscorlib t 持有 Stack<>像 System.dll 在程序集浏览器中那样键入。
有人知道这里发生了什么事吗?同一名称空间中是否存在两种具有相同名称但在这些项目之间有所不同的类型?是什么让我如此悲伤?
I am using a generic Stack type in monotouch (namespace System.Collections.Generic).
In a separate nunit project, that is referencing only the assemblies from the monotouch package, I am extending my monotouch class and reinstantiating the stack:
using System.Collections.Generic;
namespace Tests
{
public class MyExtendedClass : MyExtendableClass
{
public MyExtendedClass ()
{
m_myStackVariable = new Stack<string> ();
which gives me the following error message:
Cannot implicitly convert type
System.Collections.Generic.Stack<string>
toSystem.Collections.Generic.Stack<string>
When I try "go to base" on the Stack type it shows me mscorlib in the assembly browser which under it´s System.Collections.Generic namespace doesn´t hold the Stack<> type like the System.dll does in the assembly browser.
Anyone have any idea what´s going on here? Are there two types in the same namespace with the same name that differ between these projects? What´s giving me grief here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
确保您的 NUnit 项目引用 MonoTouch 核心库。不过,有时即使这样也不能解决问题,具体取决于您的代码。
NUnit 项目将使用 Mac 上 Mono 的库,因此返回 Stack(T) 的 MonoTouch 库无法转换为 Mac 上的 Stack(T)。
这个问题基本上使单元测试对我来说变得不可能,幸运的是使用“var”关键字可以绕过它,但这取决于你的情况。
您可以发布更多代码吗?可能有一个解决方法。
Make sure your NUnit project is referencing the MonoTouch core libraries. Still, sometimes even that doesn't fix the issue depending on your code specifically.
The NUnit project will use the libraries for Mono on the Mac, so the MonoTouch libraries returning a Stack(T), for example, can't be cast to a Stack(T) on the Mac.
This issue has basically made unit testing impossible for me, luckily using the "var" keyword can get around it, but it depends on your situation.
Can you post more code? There may be a workaround.