这是我的情况。我在数据库中有一个“城市”表,其中包含每个城市的名称,纬度和经度。在我正在开发的Silverlight项目中,我需要绑定到城市的位置,这需要是某种封装形式的纬度+经度。所以,要做到这一点,我已经创建了一个Location对象。我实际上在我的silverlight项目中需要这个Location对象,因为整个项目围绕着映射,所以它在那里是有意义的。
问题是我想使用Location属性扩展我的City对象(来自RIAServices中的Entity Framework),但我无法从我的silverlight项目中执行此操作,因为生成的RIAServices代码将City对象声明为已密封。因此,似乎我需要在RIAServices.Web中使用部分类来扩展City,但要做到这一点,它需要引用我的Location对象,它返回到我的主要silverlight应用程序中。我想我可以在一个单独的程序集中使用Location并同时使用我的silverlight应用程序和RIAServices.Web引用它,但是让RIAServices引用任何特定的应用程序文件是不错的设计?
问题是这样的:我的实体框架需要Location对象,而我的silverlight应用程序也需要它 - 如何在两者之间共享这个公共类?
感谢所有的帮助 - 我真的想在这里遵循一个好的设计模式,所以我不想破解任何东西让它发挥作用。
答案 0 :(得分:0)
我想我刚想通了:把Location.cs放在RIAServices.Web中,但是把它重命名为Location.shared.cs。现在RIAServices.Web将在代码生成中自动将其复制到RIAServices,我可以在我的silverlight项目(已经引用RIAServices)中引用它。我还可以使用Location属性将我的City对象扩展到RIAServices.Web中,因为Location.cs已经在RIAServices.Web中。万岁!
(有没有人看到这个解决方案有任何设计问题?)