我们发布了一个必须与.NET 2.0保持兼容的类库。但是,我们还希望在内部为基于WCF的项目使用此类库。
阅读例如expose-object-from-class-library-using-wcf通过创建DataContractSurrogate对象来映射2.0类,提出了使用2.0类库的方法。但是,我们的对象层次结构丰富而深刻,这将是乏味且难以维护的。
由于我们控制源代码,我正在寻找一种更简单的方法。
一种想法是将DataConract属性添加到源代码中,并在针对2.0运行时构建解决方案时提供DataContractAttribute的“空”实现,并在构建解决方案时使用System.Runtime.Serialization实现3.0和更新的运行时。这可以通过手动调整构建之间的引用来完成。
有没有更好的方法来实施这种方法?
有更好的方法吗?
答案 0 :(得分:1)
另一种方法是添加WCF属性(DataContractAttribute等),并使用.NET 3.0程序集进行构建。
在.NET 2.0下运行应用程序时,拥有运行时不可用的程序集的属性通常不会导致问题。
(如果您确实尝试访问属性,则会出现错误,但这不太可能且容易避免)。
答案 1 :(得分:0)
您可以通过代码生成或Visual Studio中提供的T4模板来实现您的目标。另一方面,我不确定,是否可以使用T4调整visual studio项目文件。 另一个可能的减去是对T4脚本的调试比普通的cs文件更乏味。