有没有办法在C#中指定程序集和命名空间?
例如,如果在项目中引用了PresentationFramework.Aero
和PresentationFramework.Luna
这两个程序集,您可能会注意到它们都在相同的命名空间中共享相同的控件,但是实现不同。
以ButtonChrome
为例。它存在于Microsoft.Windows.Themes
命名空间下的两个程序集中。
在XAML中,您可以将程序集与命名空间一起包含,因此这里没有问题。
xmlns:aeroTheme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
xmlns:lunaTheme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Luna"
<aeroTheme:ButtonChrome ../>
<lunaTheme:ButtonChrome ../>
但是在C#的代码后台中,我找不到任何方法来创建PresentationFramework.Aero
中的ButtonChrome
实例。
以下代码在编译时会给我错误CS0433。
using Microsoft.Windows.Themes;
// ...
ButtonChrome buttonChrome = new ButtonChrome();
错误 CS0433:类型“Microsoft.Windows.Themes.ButtonChrome”存在于以下两个位置:'c:\Program Files(x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\Profile\Client\PresentationFramework.Aero.dll'
和
'c:\Program Files(x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\Profile\Client\PresentationFramework.Luna.dll'。
这是可以理解的,因为编译器不知道要选择哪个
ButtonChrome
,因为我没有告诉它。有什么办法可以解决吗?