c# – 扩展列表并违反开放/封闭原则

我刚刚在我的一个类中创建了以下方法
public static bool Assimilate(this List<Card> first,List<Card> second)
{
    // Trivial
    if (first.Count == 0 || second.Count == 0)
    {
        return false;
    }

    // Sort the lists,so I can do a binarySearch
    first.sort();
    second.sort();

    // copia only the new elements
    int index;
    for (int i = 0; i < second.Count; i++)
    {
        index = first.BinarySearch(second[i]);
        if (index < 0)
        {
            first.Insert(~index,second[i]);
        }
    }

    // Edit
    second = null;

    return true;
}

我的一个朋友,审查我的代码,说我不应该创建’扩展List类’的方法,因为这违反了开放/封闭原则.
如果我想扩展类List,我应该创建一个继承自List的新类,并在该新类中实现我的“merge”方法.
他是对的吗?扩展List类违反了开放/封闭原则?

解决方法

我不认为这违反了开/关原则.我考虑的是,如果我必须“更改”现有代码以向对象添加功能,那么我违反了打开/关闭,但扩展对象正是您应该做的添加功能.

你可以用不同的语言以不同的方式扩展对象,继承只是一种方式; c#使您能够将扩展方法添加到现有类.

记住’开放扩展 – 关闭修改

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...