gpt4 book ai didi

c# - 是否可以在 C# 中将接口(interface)叠加在外部类上?

转载 作者:行者123 更新时间:2023-11-30 19:05:49 24 4
gpt4 key购买 nike

为了将类的具体实现隐藏在接口(interface)后面,例如依赖注入(inject),我发现用我感兴趣的方法和属性提取接口(interface)是很有用的。即使对于生成的类,我通常也可以实现提取接口(interface)的分部类。

但是如果我想为外部类提取接口(interface),例如从 .dll 中,我找不到任何方法来执行此操作。有可能吗?

最佳答案

最简单的方法通常是包装类来实现适配器模式。所以如果我们开始:

public class NastyExternalClass
{
public void Foo() { ... }
}

我们添加:

public interface IFooable
{
void Foo();
}

public sealed class NastyExternalClassWrapper : IFooable
{
private readonly NastyExternalClass original;

public NastyExternalClassWrapper(NastyExternalClass original)
{
this.original = original;
}

public void Foo()
{
original.Foo();
}
}

这很乏味 - 虽然它可以自动化,如果 R# 或类似工具已经支持它我也不会感到惊讶 - 但它通常有效。

如果多个对象需要相互了解并使用原始 API...或者如果原始 API 添加回调然后绕过包装器等,这将成为一个更大的问题。在这些情况下,您需要更有创造力或者只是忍受不完美:(

关于c# - 是否可以在 C# 中将接口(interface)叠加在外部类上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17548605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com