Compartilhar via


Migrar a política de check-in personalizado

Aviso

Para usar o método de migração fornecido, você não deve remover as implementações antigas das políticas antes de seguir este guia.

  1. Para migrar suas políticas personalizadas, primeiro você deve criar uma nova classe com os mesmos métodos, mas herdar CheckinPolicyBase a classe (IPolicyCompatibilityJson para IPolicyCompatibility) em vez de PolicyBase. Exemplos:

Obsoleto

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

Atualizado

    [Serializable]
    public class SimpleNew : CheckinPolicyBase
    {
        public override string Description => "SimplePolicyDescription";
        ...
    }
  1. Se GetBinaryFormatter tiver sido substituído, implemente também GetJsonSerializerSettings com a mesma lógica para serialização. Exemplo:

Obsoleto

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

Atualizado

    [Serializable]
    public class SimpleNew : CheckinPolicyBase
    {
        public override JsonSerializerSettings GetJsonSerializerSettings()
        {
            return new JsonSerializerSettings()
            {
                SerializationBinder = new SimpleNewSerializationBinder(),
                TypeNameHandling = TypeNameHandling.Objects
            };
        }
        ...
    }
  1. Em vez dos métodos antigos, como GetCheckinPoliciesForServerPaths/GetCheckinPolicies/SetCheckinPolicies, novos foram introduzidos: GetCheckinClientPoliciesForServerPaths/GetCheckinClientPolicies/SetCheckinClientPolicies adequadamente. Por exemplo, o comportamento padrão agora para o método LoadPolicies no pacote é usar novas políticas se elas forem criadas/disponibilizadas e obsoletas caso estejam ausentes.

Observação

Se você não estiver planejando usar o método de migração fornecido pelo pacote NuGet, outras instruções poderão ser omitidas e políticas obsoletas poderão ser removidas, você está pronto, parabéns!

  1. Para sua política obsoleta, adicione IPolicyMigration (esta interface está marcada como obsoleta apenas para mostrar que será removida como desnecessária junto com PolicyBase e IPolicyCompatibility).

Aviso

Políticas obsoletas que não herdam essa interface serão ignoradas durante a migração e não salvas como novas políticas.

  1. Implemente ToNewPolicyType a partir da interface mencionada. Ele deve retornar a instância da classe de política recém-criada com base na política que foi recém-modificada. Exemplo:
    [Serializable]
    public class Simple : PolicyBase, IPolicyMigration
    {
        ...
        public CheckinPolicyBase ToNewPolicyType()
        {
            return new SimpleNew();
        }
    }
  1. Chame o método MigrateFromOldPolicies.

Você terminou, parabéns!