Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为第三方库类动态创建包装类?_C#_Oop - Fatal编程技术网

C# 如何为第三方库类动态创建包装类?

C# 如何为第三方库类动态创建包装类?,c#,oop,C#,Oop,我正在写一个依赖于另一个库的库,并利用了它的一些设计 大约有10个左右的容器类只保存数据。我需要这10个类的精确包装器,这样我的库的客户机代码就不必在他们的项目中将第三方库声明为依赖项 我很好奇是否有一种方法可以轻松地为这些类创建包装器,而无需手动创建文件和类/字段的定义 我最初的解决方案是像这样扩展第三方库类 using LibFooOne = SomeLibrary.SomeNamespace.FooOne; using LibFooTwo = SomeLibrary.SomeNamespa

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

大约有10个左右的容器类只保存数据。我需要这10个类的精确包装器,这样我的库的客户机代码就不必在他们的项目中将第三方库声明为依赖项

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

我最初的解决方案是像这样扩展第三方库类

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
但是,一旦我在一个示例项目中测试了我的库,就出现了一个编译错误,抱怨在项目程序集中没有引用第三方

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

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


Edit:我的问题不是问我是否可以知道如何使最初的解决方案起作用。我只是把它作为我最终目标的一个例子。我在问c#中是否有库或包装类的方法。我可以创建一个具有相同字段的类,并创建一个强制转换方法。这可以解决我的问题。但是,这需要大量的手工工作。否:您正在对存储在第三方程序集中的类进行子类化。程序运行时,目标计算机上需要这些程序集


如果您有相关第三方程序集的源代码,并且您有许可权,那么您可以对第三方程序集进行子类化并编译您自己的版本。但是,听起来您没有这些第三方程序集的源代码。

您可以使用从来从对象创建运行时代理。但是,这不会删除对原始对象引用的要求。您是否可以使用Nuget软件包来解决此问题。或者你不能部署第三方DLLSI我的问题不是问我是否可以让我的初始解决方案发挥作用。我只是把它作为我最终目标的一个例子。我在问c#中是否有库或包装类的方法。我有源代码,但我不需要它。我可以创建一个具有相同字段的类,并创建一个强制转换方法。这可以解决我的问题。然而,这需要大量的手工工作。