如何动态创建第三方库类的包装类?

时间:2018-04-26 22:46:23

标签: c# oop

我正在编写一个依赖于另一个库的库,并利用它的一些设计。

大约有10个容器类只保存数据。我需要这10个类的精确包装器,因此我的库的客户端代码不必将第3方库声明为其项目中的依赖项。

我很好奇是否有办法轻松地为这些类创建包装器而无需手动创建文件和类/字段的定义。

我最初的解决方案是从第3方库类扩展,如下所示。

using LibFooOne = SomeLibrary.SomeNamespace.FooOne;
using LibFooTwo = SomeLibrary.SomeNamespace.FooTwo;
// ...

public class FooOne : LibFooOne { }
public class FooTwo : LibFooTwo { }
// ... And so on for the 10+ other classes

但是一旦我在一个示例项目中测试了我的库,就会出现编译错误,抱怨项目程序集中没有引用第三方。

到目前为止,我发现唯一可行的解​​决方案是手动创建第三方库类的精确副本,并为每个类编写类型转换方法。

我可以动态创建这些副本的任何可能的方法,所以不强制客户端代码安装第三方库?是否有库来处理这类任务?

编辑:我的问题不是问我是否能够使我的初始解决方案有效。我只是用它作为我最终目标的一个例子。我问是否有c#中的库或方法来包装类。我可以创建一个具有相同字段的类,并创建一个转换方法。这有效并解决了我的问题。然而,这是很多手工工作。

1 个答案:

答案 0 :(得分:0)

否:您正在对存储在第三方程序集中的类进行子类化。程序运行时,您将需要目标计算机上的那些程序集。

如果您有相关第三方程序集的源代码并且您拥有许可权限,则可以继承并编译您自己的第三方程序集版本。但听起来你没有这些第三方程序集的源代码。