C# 使用未引用dll中的数据类型在XAML中工作,为什么?

C# 使用未引用dll中的数据类型在XAML中工作,为什么?,c#,wpf,xaml,c++-cli,C#,Wpf,Xaml,C++ Cli,我有dll A和B,它们都是用C++Cli编写的。 A和B都有名称空间SomeNamespace.MyNamespace。 我将C#应用程序编译为类库,我正在调用dll C。 A参考文献B和C,C参考文献B 现在,在dll C中的一个XAML资源中,我声明了以下内容: xmlns:myNamespace="clr-namespace:SomeNamespace.MyNamespace;assembly=A" <DataTemplate DataType="{x:Type myNamesp

我有dll A和B,它们都是用C++Cli编写的。 A和B都有名称空间SomeNamespace.MyNamespace。 我将C#应用程序编译为类库,我正在调用dll C。 A参考文献B和C,C参考文献B

现在,在dll C中的一个XAML资源中,我声明了以下内容:

xmlns:myNamespace="clr-namespace:SomeNamespace.MyNamespace;assembly=A"
<DataTemplate DataType="{x:Type myNamespace:SomeClassFromA}">
    <TextBlock Text="This works!"/>
</DataTemplate>
这使我能够访问A中的数据类型,即使A未被引用。因此,我能够做到以下几点:

xmlns:myNamespace="clr-namespace:SomeNamespace.MyNamespace;assembly=A"
<DataTemplate DataType="{x:Type myNamespace:SomeClassFromA}">
    <TextBlock Text="This works!"/>
</DataTemplate>

我应该继续使用这个吗?任何潜在问题

编辑

我偶然碰到这个。这看起来像是黑客攻击,所以我在这里发布了一个问题。目前,我正在使用接口,并且来自的每个类都有一个字符串属性DataTemplateKey,以了解它使用哪个DataTemplate。然而,如果我能够可靠地使用它,而不会在未来的.Net版本中出现这种中断,那么我当前的代码就会更干净

编辑2

我现在得到一个编译时错误:类型引用找不到名为


所以,现在它不起作用了。

如果事件是不可预见的,我应该如何告诉你不可预见的后果是什么?这很公平。我没料到。有没有什么特别的原因让我投反对票。这不是一个有效的问题吗?引用a会导致错误吗?是的,循环依赖关系。如果是不可预见的,我应该如何告诉您不可预见的后果是什么?这很公平。我没料到。有没有什么特别的原因让我投反对票。这不是一个有效的问题吗?引用a是否会导致错误?是的,循环依赖项。