Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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# - Fatal编程技术网

C# 在位于外部库中的类上创建抽象

C# 在位于外部库中的类上创建抽象,c#,C#,我正在处理的c#项目引用了驻留在外部类库中的“产品”具体类型。“Product”类不实现任何接口 我想在“产品”的基础上创建一个“IPProduct”接口,并使用此接口代码,这样我就可以针对接口而不是实现进行编程 由于我仍然希望继续使用“Product”类型,有什么好的模式可以让我的代码知道“Product”实现“ipproduct” 由于“产品”驻留在外部库中,所以我不能更改其声明(即Procut:ipproduct) 这个类也没有公共构造函数,所以我想扩展它不是一个选项 对于这种情况,什么是

我正在处理的c#项目引用了驻留在外部类库中的“产品”具体类型。“Product”类不实现任何接口

我想在“产品”的基础上创建一个“IPProduct”接口,并使用此接口代码,这样我就可以针对接口而不是实现进行编程

由于我仍然希望继续使用“Product”类型,有什么好的模式可以让我的代码知道“Product”实现“ipproduct”

由于“产品”驻留在外部库中,所以我不能更改其声明(即Procut:ipproduct)

这个类也没有公共构造函数,所以我想扩展它不是一个选项

对于这种情况,什么是好的解决方案模式?包装纸


谢谢。

您可能需要使用适配器模式

因此,您可以这样做,如下所示:

public class Product 
{
    // Your Product Class
}

public class MyProduct : Product,  IProduct
{

}
其中,
MyProduct
类实现了接口,但也具有
Product
类中可用的所有公共和受保护的方法/属性。这允许您在不修改
产品的情况下扩展原始类
类,该类遵循打开/关闭原则


您可以在此处阅读更多信息:

您已经讨论了以下类型:
Product
Produt
Prodcut
proccut
、以及
Procut
。这些都是不同的,还是意味着相同的?听起来你需要看看,如果产品没有公开公共构造函数,我可以这样做吗?只要产品类没有声明为密封的,你应该能够从itit派生它没有密封的,但我想如果它没有公共构造函数,我会得到错误“'Product'不包含接受0个参数的构造函数”。在我的示例中,产品没有其他公共构造函数重载。请检查产品是否有私有构造函数所有构造函数重载都是内部的。