Dela via


Migrera anpassad incheckningsprincip

Varning

Om du vill använda den angivna migreringsmetoden får du inte ta bort de gamla implementeringarna av principerna innan du följer den här guiden.

  1. Om du vill migrera dina anpassade principer bör du först skapa en ny klass med samma metoder men ärva från CheckinPolicyBase-klassen (IPolicyCompatibilityJson för IPolicyCompatibility) i stället för PolicyBase. Exempel:

Föråldrad

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

Uppdaterad

    [Serializable]
    public class SimpleNew : CheckinPolicyBase
    {
        public override string Description => "SimplePolicyDescription";
        ...
    }
  1. Om GetBinaryFormatter skulle åsidosättas, bör du även implementera GetJsonSerializerSettings med samma logik för serialisering. Exempel:

Föråldrad

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

Uppdaterad

    [Serializable]
    public class SimpleNew : CheckinPolicyBase
    {
        public override JsonSerializerSettings GetJsonSerializerSettings()
        {
            return new JsonSerializerSettings()
            {
                SerializationBinder = new SimpleNewSerializationBinder(),
                TypeNameHandling = TypeNameHandling.Objects
            };
        }
        ...
    }
  1. I stället för de gamla metoderna som GetCheckinPoliciesForServerPaths/GetCheckinPolicies/SetCheckinPolicies introducerades nya: GetCheckinClientPoliciesForServerPaths/GetCheckinClientPolicies/SetCheckinClientPolicies därför. Standardbeteendet just nu för LoadPolicies metoden i paketet är till exempel att använda nya principer om de skapas/är tillgängliga och föråldrade om de saknas.

Anmärkning

Om du inte planerar att använda migreringsmetoden som tillhandahålls av NuGet-paketet kan ytterligare instruktioner utelämnas och föråldrade principer kan tas bort, du är klar, grattis!

  1. För din föråldrade policy, lägg till IPolicyMigration (detta gränssnitt har markerats som föråldrat endast för att visa att det kommer att tas bort som onödigt tillsammans med PolicyBase och IPolicyCompatibility).

Varning

Föråldrade principer som inte ärver det här gränssnittet hoppas över under migreringen och sparas inte som nya principer.

  1. Implementera ToNewPolicyType från det nämnda gränssnittet. Den bör returnera instansen av den nyligen skapade principklassen som baseras på den nyligen ändrade policyn. Exempel:
    [Serializable]
    public class Simple : PolicyBase, IPolicyMigration
    {
        ...
        public CheckinPolicyBase ToNewPolicyType()
        {
            return new SimpleNew();
        }
    }
  1. Anropsmetod MigrateFromOldPolicies .

Du är klar, grattis!