Единственный метод обратной совместимости, который я видел, это версия каждого изменения вашего события.Некоторые люди создают новые версии в другом пространстве имен, так что пространство имен отражает информацию о версии / функции:
namespace Foo.ProjectA.Release1
{
public interface ISomeEvent {...}
}
namespace Foo.ProjectA.Release3
{
public interface ISomeEvent {...}
}
В качестве альтернативы, создайте новую версию класса с информацией о версии / функции в имени класса:
namespace Foo.ProjectA
{
public interface ISomeEvent {...}
public interface ISomeEvent_MoreRefinedVersion {...}
}
Лично я предпочитаю первый подход, , если новая версия не добавляет более конкретное семантическое значение событию.