如何使静态类中的所有方法在c#中的另一个静态类中可用

Posted

技术标签:

【中文标题】如何使静态类中的所有方法在c#中的另一个静态类中可用【英文标题】:How to make all methods from static class available in another static class in c# 【发布时间】:2021-10-18 06:51:50 【问题描述】:

我想向无法修改的外部静态类添加额外的 c# 方法。即为方便起见创建一个包装类,其中包含外部静态类的方法+我自己的静态方法。

我最初想从外部静态类继承我自己的类,但我发现静态类是密封的,不能以形式继承。

最好的方法是什么?

非常感谢您的帮助

【问题讨论】:

用你自己的封装外部静态类方法。 只是为了添加到包装器的“专业人士”中:如果外部库在静态 API 中有重大更改,您很可能只需要更改您的代码来适应。 感谢您的回答。这是唯一的方法吗?我的外部库有数百种方法,我宁愿不为每个方法创建包装器方法... 在这种情况下,不要。只需创建自己的静态类并在适当的地方使用两者。然而:(我的观点)一个带有“数百种方法”的静态类在我的书中是一种非常强烈的代码气味,无论如何......并引导我进入下一个问题:你是否在使用它们中的 all ?如果没有,您可以在合理范围内代理您实际需要的那些。 很确定您可以使用查找/替换来编写大部分代理。看看像 Sublime 这样可以放置多个光标的编辑器,在方法调用上双击例如 public,重复按 Ctrl D 直到所有 public 都被突出显示并有它们的光标,然后试着把你的头绕起来多个光标都服从您的模板输入 - 如果您按 SHIFT+END,它们将全部移至行尾,边走边选择。因此,使用该技术仅突出显示方法签名行。 ctrlc/v 进入。 . 【参考方案1】:

根据 Llama 的指示代理呼叫

public static class YourClass

  public SomeType TheirMethod(..)
    return TheirClass.TheirMethod(...);
  

...

【讨论】:

以上是关于如何使静态类中的所有方法在c#中的另一个静态类中可用的主要内容,如果未能解决你的问题,请参考以下文章

C#基础——全局静态类中的静态类变量的设置

静态类中的向量

如何在C#中,在一个类里调用另外一个类的方法

使用java语言,如何对一个类中的静态方法做切面编程?

PHP 抽象类,接口,抽象方法,静态方法

c#静态类中的8个可为空的引用类型