【发布时间】:2019-12-04 00:59:18
【问题描述】:
问题陈述
我有两个程序集,一个主要包含数据协定,另一个包含 UI 层。
数据协定是公开的,并在 UI 程序集中的 XAML 中的 DataTemplate 标记中使用。
<DataTemplate DataType="{x:Type contracts:MyContract}">
///other stuff
</DataTemplate>
数据契约是这样引用的:
<xmlns:contracts="clr-namespace:Contracts.DataContracts,assembly=Contracts.DataContracts"
现在我想让所有的 DataContract 程序集都在内部,以保持较低的 API 表面。我在 DataContracts 程序集的 AssemblyInfo 类中添加了 UI 程序集作为友元程序集。但是,当我编译 UI 程序集时,我在 XAML 中收到以下错误:
Only public or internal classes can be used within markup. 'MyContract' type is not public or internal.
我检查了InternalVisibleTo 是否正常工作,因为我可以在后面的代码中访问其他内部内容。但在 XAML 中这是不可能的。
有哪些可能的方法来解决这个问题?
【问题讨论】:
标签: c# wpf xaml access-modifiers