在MonoGame &Microsoft.XNA.Framework名称空间
本文关键字:空间 Framework XNA MonoGame Microsoft | 更新日期: 2023-09-27 18:02:13
MonoGame(一个将XNA带到Windows Phone 8的框架)的所有名称空间都以Microsoft.Xna.Framework
为前缀,我相信这可以最大限度地减少将XNA应用移植到MonoGame时所需的代码更改量。
我的问题是,我希望访问Microphone
类,其中,因为还没有在MonoGame中创建,我必须从微软官方XNA类中使用它,这需要在.csproj中明确强制删除标准Microsoft.XNA.Framework.dll
引用,我的MonoGame模板已经设置以避免冲突,它工作得很好,现在Microphone
是可访问的,但是在这样做的时候,我在Microsoft standard issue和MonoGame中存在的几个关键类之间造成了歧义。
我收到的错误是:
歧义引用:
Microsoft.Xna.Framework.Color
Microsoft.Xna.Framework.Color
这显然已经发生了,因为除了标准的microsoft发布的XNA库之外,我还有一个对MonoGame.Framework.dll
的引用,它占用了名称空间,造成了这种模糊性。然而,在所有情况下,我都希望访问一夫一妻制版本。
任何想法我如何可以明确地告诉编译器使用Color
和Vector2
类的一夫一妻制版本,而不是官方的微软一个?
在using Color = Microsoft.Xna.Framework
中的任何尝试显然都不会工作,因为它们在编译的dll中都被标记为相同的!
解决这个特定问题的方法是使用extern alias
(MSDN, tutorial)。
这样,您可以别名Microsoft XNA DLL,并为Microphone
类指定适当的using
语句。继续正常使用MonoGame。
可能更好的解决方案是使用这种技术在名称空间Microsoft.Xna.Framework.Audio
中创建自己的包装器类Microphone
。把它放在一个单独的程序集中,这样你就不必用extern alias
的东西污染你的主源代码。
理想的方法,当然,是实际实现Microphone
的一夫一妻制,并贡献它;)