Разве изменение базового класса абстрактного класса нарушает классы, переопределяющие его? - PullRequest
0 голосов
/ 31 мая 2019

Я работаю над библиотекой C #, в которой примерно следующая реализация abstract class:

public abstract class ModPrefab
{
    public string ClassID { get; protected set; }

    public string PrefabFileName { get; protected set; }

    public TechType TechType { get; protected set; }

    protected ModPrefab(string classId, string prefabFileName, TechType techType = TechType.None)
    {
        ClassID = classId;
        PrefabFileName = prefabFileName;
        TechType = techType;
    }
}

Эта библиотека в настоящее время используется многими другими проектами.

Я разрабатываю обновление для этой библиотеки, которое включает в себя перемещение этого класса в другую сборку и перераспределение старой сборки (со всеми методами, передаваемыми в новую сборку) для обратной совместимости.

Мне было интересно, сломались бы проекты, зависящие от этого, если бы я изменил реализацию на:

public abstract class ModPrefab : NamespaceInNewAssembly.ModPrefab
{
    protected ModPrefab(string classId, string prefabFileName, TechType techType = TechType.None) 
        : base(classId, prefabFileName, techType) { }
}

, где NamespaceInNewAssembly.ModPrefab определяется в другой сборке как:

namespace NamespaceInNewAssembly
{
    public abstract class ModPrefab
    {
        public string ClassID { get; protected set; }

        public string PrefabFileName { get; protected set; }

        public TechType TechType { get; protected set; }

        protected ModPrefab(string classId, string prefabFileName, TechType techType = TechType.None)
        {
            ClassID = classId;
            PrefabFileName = prefabFileName;
            TechType = techType;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...