internal PartitionInstanceCountScaleMechanism(PartitionInstanceCountScaleMechanism other)
     : base(ScalingMechanismKind.ScalePartitionInstanceCount)
 {
     MinInstanceCount = other.MinInstanceCount;
     MaxInstanceCount = other.MaxInstanceCount;
     ScaleIncrement   = other.ScaleIncrement;
 }
 internal static unsafe ScalingMechanismDescription CreateFromNative(NativeTypes.FABRIC_SCALING_MECHANISM mechanism)
 {
     if (mechanism.ScalingMechanismKind == NativeTypes.FABRIC_SCALING_MECHANISM_KIND.FABRIC_SCALING_MECHANISM_KIND_SCALE_PARTITION_INSTANCE_COUNT)
     {
         return(PartitionInstanceCountScaleMechanism.CreateFromNative(mechanism));
     }
     else if (mechanism.ScalingMechanismKind == NativeTypes.FABRIC_SCALING_MECHANISM_KIND.FABRIC_SCALING_MECHANISM_KIND_ADD_REMOVE_INCREMENTAL_NAMED_PARTITION)
     {
         return(AddRemoveIncrementalNamedPartitionScalingMechanism.CreateFromNative(mechanism));
     }
     else
     {
         return(null);
     }
 }
        internal new static unsafe PartitionInstanceCountScaleMechanism CreateFromNative(NativeTypes.FABRIC_SCALING_MECHANISM policy)
        {
            if (policy.ScalingMechanismDescription != IntPtr.Zero)
            {
                var partitionInstanceCount = new PartitionInstanceCountScaleMechanism();
                var nativeDescription      = (NativeTypes.FABRIC_SCALING_MECHANISM_PARTITION_INSTANCE_COUNT *)policy.ScalingMechanismDescription;

                partitionInstanceCount.ScaleIncrement   = nativeDescription->ScaleIncrement;
                partitionInstanceCount.MinInstanceCount = nativeDescription->MinimumInstanceCount;
                partitionInstanceCount.MaxInstanceCount = nativeDescription->MaximumInstanceCount;

                return(partitionInstanceCount);
            }

            return(null);
        }