我有课程customer
和product
。他们的相似之处在于班级Base Record
。但是,Base Record
中的类型始终取决于它是customer
还是product
。因此,我通常会Base Record
创建。
只要customer
或product
继承自Base Record
,我的WPF项目就会出现XMAL错误。不幸的是,我不知道为什么会这样,为什么我在这里写;)
BaseRecord的标题:
public abstract class BaseRecord<T> : Notify where T : class, new()
客户标题:
public class Customer : BaseRecord<Data_Layer.Customer>
XAML错误:
Unknown build error, 'Cannot resolve dependency to assembly 'Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on
demand through the ReflectionOnlyAssemblyResolve event.'
和
The tag 'CustomerAddWindow' does not exist in XML namespace 'clr-namespace:Business_Layer.Windows.Customer;assembly=Business_Layer'
如果我使课程BaseRecord
不通用,一切都按我的意思运作。
在XAML中,我实例化
<local:Customer x:Key="CustomerViewModel "/>
新年快乐。
答案 0 :(得分:1)
XAML不直接支持泛型。
有一些侧面项目旨在解决这个问题,但我总是选择与之共存。它实际上从未阻碍我的应用程序架构。
我相信它简单有效的解决方法是拥有一个解决泛型的中继承类。
例如,
public abstract class BaseRecord<T> : Notify where T : class, new()
public abstract class CustomerBase : BaseRecord<Data_Layer.Customer>
public class Customer : CustomerBase
我目前正在开发一个WPF应用程序,我的XAML中不需要任何泛型。
我在xaml代码隐藏中没有代码。实际上,由于某些自定义,我的基本窗口类具有与所有UI相关的代码。
如果您遵循MVVM
架构,那么可能属于基本窗口属性的泛型应该很可能属于ViewModel类。
答案 1 :(得分:0)
我找到了错误并希望显示我的解决方案:
我已经添加了对我的WPF项目的引用,其中我的类是我在通用类中使用的。
我的架构是:
Business_Layer for business logic
Data_Layer从DB维护我的数据
Presentation_Layer as View。
我没有将Data_Layer引用到Presentation_Layer,因为没有必要。但是当你在WPF项目中使用泛型类时,你必须要WPF才能解决它。
这是第一个想要告诉的错误:
Unknown build error, 'Cannot resolve dependency to assembly 'Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.'
我不知道为什么但是在将这个data_layer引用添加到presentation_layer之后,我不需要解决方法类。我可以用
public class CustomerBase : BaseRecord<Data_Layer.Customer>
直接没有任何错误。