扩展方法是否遵循开闭原则

Is extension methods follow open close principle

我的问题是扩展方法和开闭原则:

  1. 为 类 创建扩展方法是否遵循开闭原则?

  2. 如何测试使用扩展方法的 类?

  1. Do creating extensions methods for classes follow open-close principle?

从技术上讲是的,因为大多数正式定义都指出 open/closed 原则是 "Closed for modification, but open for extension"。由于扩展方法不修改原始 class,而只是扩展它,因此扩展方法符合此定义。

  1. How do I test classes that use extension methods?

就像任何其他测试一样:

示例扩展方法:

public static class Extensions
{
    public static string ToLowerAndTrim(this string source) => source.Trim().ToLower();
}

使用 XUnit 的测试用例:

[Fact]
public void SampleTest()
{
    string input = " Hello World ";
    string expected = "hello world";

    string actual = input.ToLowerAndTrim();

    Assert.Equal(expected, actual);
}