在.net类库中引用不同的模型对象,具体取决于它所包含的项目

Ced*_*che 7 .net c# wpf class-library portable-class-library

我目前的解决方案有以下设置:

  • 我的模型的可移植类库
  • 具有处理所有数据库流量的存储库的类库
    • 使用模型引用可移植类库
  • WPF项目
    • 引用模型和存储库
  • Windows应用商店应用
    • 使用模型引用可移植类库
  • ASP MVC网站
    • 引用模型和存储库

在我必须向WPF项目添加数据验证之前,此设置一直很好用.我必须在模型上使用IDataErrorInfo.我有点卡住,因为便携式类库不支持IDataErrorInfo.

我尝试的是在我的WPF项目中为我的可移植类库中的每个模型类添加一个具有相同名称的新模型类,并从我的库中的类继承.然后我可以在子类中添加所有验证代码.问题当然是我的WPF项目将类库与我的存储库一起使用,这些存储库返回我的模型基类的实例(来自可移植类库).在我的WPF项目中抛出模型类的每一次出现似乎都没有办法......

所以我的问题是:我可以以某种方式让存储库类lib返回不同的模型对象,具体取决于它所使用的项目吗?(总是基本的,但在WPF项目中使用时的子类).(我确实认识到让存储库lib了解我的wpf项目不是最好的主意,但是如果这就是我需要的东西我很好.)

如果有其他方法可以实现我的目标,请告诉我们!

Lue*_*eTm 1

听起来很棘手。我想到了不同的解决方案。

为您拥有的每个模型类创建一个接口。

  • 优点: WPF应用程序不需要关心具体的实现。您可以通过存储库或类似的方式引入它们。
  • 缺点:需要大量工作,WPF 设计器不能很好地处理界面,因此您必须创建假货或:

使用T4生成您的类/接口

  • 优点:您无需进行接口带来的维护工作。此外,您不必多次反映更改(模型、接口、假)。
  • 缺点:你必须深入研究它:),目前还没有想到其他的。