2014-07-08 120 views
0

消歧的命名空間我有一個Page是進口管制從圖書館這樣的:中產生的XAML代碼

<Page 
    x:Class="Foo.Bar.SomePage" 
    xmlns:myNamespace="using:Bar.Controls"> 

    <myNamespace:SomeControl x:Name="someControl"> 
     <!-- snip --> 
    </myNamespace:SomeControl> 
</Page> 

正如你可以在這裏看到,該頁面在::Foo::Bar命名空間中聲明,而SomeControl聲明在::Bar命名空間中。我面臨的問題是Visual Studio生成驗證碼:

namespace Bar { 
    namespace Controls { 
     ref class SomeControl; 
    } 
} 

namespace Foo 
{ 
    namespace Bar 
    { 
     partial ref class SomePage : /* ... */ 
     { 
      /* ... */ 
      private: Bar::SomeControl^ someControl; 
     }; 
    } 
} 

字段定義Bar::SomeControl^ someControl嘗試選擇::Foo::Bar::SomeControl而不是::Bar::SomeControl因爲Visual Studio不完全限定它。

這是否是有意設計的(是否有一種方法可以將using: URI短語以使其完全限定名稱),還是這是一個錯誤?我該如何解決這個問題?

我認爲我可以說服人們對這個特定類的命名空間結構作出例外,但是如果存在針對此類的代碼內解決方案會更簡單。

回答

0

對於後人,現在我用這個雜牌#包括生長激素文件之前,但它不是超級靚:

namespace Foo 
{ 
    namespace Bar 
    { 
     typedef ::Bar::SomeControl SomeControl; 
    } 
} 

它引入了控制入(不正確)的命名空間,以便它的作品甚至儘管XAML代碼生成器會出錯。