Поделиться через


Перенос пользовательской политики регистрации

Предупреждение

Чтобы использовать предоставленный метод миграции, нельзя удалять старые реализации политик до выполнения этого руководства.

  1. Чтобы перенести пользовательские политики, сначала следует создать новый класс с теми же методами, но наследуя CheckinPolicyBase класс (IPolicyCompatibilityJson для IPolicyCompatibility) вместо PolicyBase. Примеры:

Устаревшие.

    [Serializable]
    public class Simple : PolicyBase
    {
       public override string Description => "SimplePolicyDescription";
       ...
    }

Обновлено

    [Serializable]
    public class SimpleNew : CheckinPolicyBase
    {
        public override string Description => "SimplePolicyDescription";
        ...
    }
  1. Если GetBinaryFormatter был переопределён, то также реализуйте GetJsonSerializerSettings с использованием той же логики для сериализации. Пример:

Устаревшие.

    [Serializable]
    public class Simple : PolicyBase
    {
        public override BinaryFormatter GetBinaryFormatter()
        {
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Binder = new SimpleBinder();
            return formatter;
        }
        ...
    }

Обновлено

    [Serializable]
    public class SimpleNew : CheckinPolicyBase
    {
        public override JsonSerializerSettings GetJsonSerializerSettings()
        {
            return new JsonSerializerSettings()
            {
                SerializationBinder = new SimpleNewSerializationBinder(),
                TypeNameHandling = TypeNameHandling.Objects
            };
        }
        ...
    }
  1. Вместо старых методов, таких как GetCheckinPoliciesForServerPaths/GetCheckinPolicies/SetCheckinPolicies новые, были введены:GetCheckinClientPoliciesForServerPaths/GetCheckinClientPolicies/SetCheckinClientPoliciesсоответственно. Например, поведение по умолчанию для метода LoadPolicies в пакете заключается в использовании новых политик, если они созданы или доступны, и устаревших, если новых нет.

Примечание.

Если вы не планируете использовать метод миграции, предоставленный пакетом NuGet, дальнейшие инструкции могут быть опущены и устаревшие политики можно удалить, вы сделали, поздравляем!

  1. Для вашей устаревшей политики добавьте IPolicyMigration (этот интерфейс помечен как устаревший только для того, чтобы показать, что он будет удален как ненужный вместе с PolicyBase и IPolicyCompatibility).

Предупреждение

Устаревшие политики, которые не наследуют этот интерфейс, будут пропущены во время миграции и не сохранены в качестве новых политик.

  1. Реализуйте ToNewPolicyType из указанного интерфейса. Он должен возвращать экземпляр только что созданного класса политики, основанного на текущей измененной политике. Пример:
    [Serializable]
    public class Simple : PolicyBase, IPolicyMigration
    {
        ...
        public CheckinPolicyBase ToNewPolicyType()
        {
            return new SimpleNew();
        }
    }
  1. Вызывайте метод MigrateFromOldPolicies.

Все готово, поздравляем!