internal AveragePartitionLoadScalingTrigger(AveragePartitionLoadScalingTrigger other)
     : base(ScalingTriggerKind.AveragePartitionLoadTrigger)
 {
     MetricName         = other.MetricName;
     LowerLoadThreshold = other.LowerLoadThreshold;
     UpperLoadThreshold = other.UpperLoadThreshold;
     ScaleInterval      = other.ScaleInterval;
 }
 internal static unsafe ScalingTriggerDescription CreateFromNative(NativeTypes.FABRIC_SCALING_TRIGGER trigger)
 {
     if (trigger.ScalingTriggerKind == NativeTypes.FABRIC_SCALING_TRIGGER_KIND.FABRIC_SCALING_TRIGGER_KIND_AVERAGE_PARTITION_LOAD)
     {
         return(AveragePartitionLoadScalingTrigger.CreateFromNative(trigger));
     }
     else if (trigger.ScalingTriggerKind == NativeTypes.FABRIC_SCALING_TRIGGER_KIND.FABRIC_SCALING_TRIGGER_KIND_AVERAGE_SERVICE_LOAD)
     {
         return(AverageServiceLoadScalingTrigger.CreateFromNative(trigger));
     }
     else
     {
         return(null);
     }
 }
        internal new static unsafe AveragePartitionLoadScalingTrigger CreateFromNative(NativeTypes.FABRIC_SCALING_TRIGGER policy)
        {
            if (policy.ScalingTriggerDescription != IntPtr.Zero)
            {
                var partitionAverageLoad = new AveragePartitionLoadScalingTrigger();
                var nativeDescription    = (NativeTypes.FABRIC_SCALING_TRIGGER_AVERAGE_PARTITION_LOAD *)policy.ScalingTriggerDescription;

                partitionAverageLoad.MetricName             = NativeTypes.FromNativeString(nativeDescription->MetricName);
                partitionAverageLoad.UpperLoadThreshold     = nativeDescription->UpperLoadThreshold;
                partitionAverageLoad.LowerLoadThreshold     = nativeDescription->LowerLoadThreshold;
                partitionAverageLoad.ScaleIntervalInSeconds = (int)nativeDescription->ScaleIntervalInSeconds;

                return(partitionAverageLoad);
            }

            return(null);
        }