在C#中如何在不同项目之间共享对象

3

我有一个包含2个项目的解决方案...

项目A包含以下内容: A - 引用第三方DLL(其中包含一个名为“Response”的类) B - 一个使用上述DLL并从名为“GetResponse”的方法返回“Response”对象的类

现在,项目B像这样调用项目A中的类...

Response r = ProjectA.Class.GetResponse();

这个会返回一个错误,因为在我的项目B中没有“第三方”引用。

我宁愿不把我的第三方DLL发到其他所有项目中,只是为了从第三方DLL中获取Response对象的引用。

那么有没有不必将第三方引用添加到项目B中就可以完成的方法呢?


3
显然,你正在尝试使用Response类,因此它必须被定义。你需要这个引用。 - Lucas Trzesniewski
是的,我可以引用它...但是否有一种方法将响应对象映射到项目B而无需引用整个DLL? - user2404597
在较新的VS/.NET版本中,您可以使用共享项目,这将把共享代码编译到每个项目中。这可能适合您的需求,但可能会带来类型转换/转换问题。更多信息请访问https://dev59.com/nF0a5IYBdhLWcg3wLV8G。 - StingyJack
此外,如果B调用A,则已经隐式地引用了A所引用的程序集。 - StingyJack
1个回答

5
如果您的项目使用了第三方DLL中定义的对象,那么它也必须被直接引用。
如果您想避免这种情况,可以在Project B中创建一个自定义对象来封装“Response”对象,并创建方法和属性以公开“Response”类上所需的任何内容。请记住,您不能直接公开“Response”类,否则将再次需要直接引用。
当然,即使通过包装,部署最终DLL时仍然需要第三方DLL,只是不需要直接引用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接