using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.Data.SqlClient;
using Microsoft.AspNetCore.JsonPatch;
public static void Main()
var configMap = new Dictionary<string,string>();
configMap.Add("Alpha", "Beta");
var patch = new JsonPatchDocument<V1ConfigMap>().Replace(config => config.Data, configMap);
Console.WriteLine(patch);
public enum ValidationState : int
ProductStateNonDeletedMask = 0x00000007,
ProductStateMask = 0x0000000F,
SCNodeStateNonDeletedMask = 0x00000070,
SCNodeStateMask = 0x000000F0,
SourceProductStateMask = 0x0000000F,
SourceSCNodeStateMask = 0x000000F0,
DestProductStateMask = 0x00000F00,
DestSCNodeStateMask = 0x0000F000,
TransferStateNonDeletedMask = 0x00070000,
TransferStateMask = 0x000F0000,
BOMStateNonDeletedMask = 0x00700000,
BOMStateMask = 0x00F00000,
public static class ValidationStateEnum
private const int ProductStateOffset = 0;
private const int SCNodeStateOffset = 4;
private const int SourceProductStateOffset = 0;
private const int SourceSCNodeStateOffset = 4;
private const int DestProductStateOffset = 8;
private const int DestSCNodeStateOffset = 12;
private const int TransferStateOffset = 16;
private const int BOMStateOffset = 20;
private static ValidationState ParseState(string state, int offset)
=> Enum.TryParse<ValidationState>(state, true, out var validationState) ? (ValidationState)((int)validationState << offset) : ValidationState.None;
private static ValidationState ParseStates(IEnumerable<string> states, int offset)
=> (states ?? Enumerable.Empty<string>()).Aggregate(ValidationState.None, (validationState, state) => validationState |= ParseState(state, offset));
private static string ToString(this ValidationState validationState, int offset)
=> Enum.GetName(typeof(ValidationState), (ValidationState)((int)validationState >> offset));
public static ValidationState ParseBOMState(string state)
=> ParseState(state, BOMStateOffset);
public static ValidationState ParseBOMStates(IEnumerable<string> states)
=> ParseStates(states, BOMStateOffset);
public static ValidationState ParseProductState(string state)
=> ParseState(state, ProductStateOffset);
public static ValidationState ParseProductStates(IEnumerable<string> states)
=> ParseStates(states, ProductStateOffset);
public static ValidationState ParseSCNodeState(string state)
=> ParseState(state, SCNodeStateOffset);
public static ValidationState ParseSCNodeStates(IEnumerable<string> states)
=> ParseStates(states, SCNodeStateOffset);
public static ValidationState ParseTransferState(string state)
=> ParseState(state, TransferStateOffset);
public static ValidationState ParseTransferStates(IEnumerable<string> states)
=> ParseStates(states, TransferStateOffset);
public static ValidationState NegateMask(this ValidationState validationState, ValidationState mask)
=> (ValidationState.None != (validationState & mask) ? ~validationState & mask : ValidationState.None);
public static ValidationState ShiftFromSource(this ValidationState validationState)
public static ValidationState ShiftFromDest(this ValidationState validationState)
=> (ValidationState)((int)validationState >> DestProductStateOffset);
public static ValidationState ShiftFromProduct(this ValidationState validationState)
=> (ValidationState)((int)validationState >> ProductStateOffset);
public static ValidationState ShiftFromSCNode(this ValidationState validationState)
=> (ValidationState)((int)validationState >> SCNodeStateOffset);
public static ValidationState ShiftFromBOM(this ValidationState validationState)
=> (ValidationState)((int)validationState >> BOMStateOffset);
public static ValidationState ShiftFromTransfer(this ValidationState validationState)
=> (ValidationState)((int)validationState >> TransferStateOffset);
public static ValidationState ShiftToSource(this ValidationState validationState)
public static ValidationState ShiftToDest(this ValidationState validationState)
=> (ValidationState)((int)validationState << DestProductStateOffset);
public static ValidationState ShiftToProduct(this ValidationState validationState)
=> (ValidationState)((int)validationState << ProductStateOffset);
public static ValidationState ShiftToSCNode(this ValidationState validationState)
=> (ValidationState)((int)validationState << SCNodeStateOffset);
public static ValidationState ShiftToBOM(this ValidationState validationState)
=> (ValidationState)((int)validationState << BOMStateOffset);
public static ValidationState ShiftToTransfer(this ValidationState validationState)
=> (ValidationState)((int)validationState << TransferStateOffset);
public static string ToBOMStateString(this ValidationState validationState)
=> (validationState & ValidationState.BOMStateMask).ToString(BOMStateOffset);
public static string ToProductStateString(this ValidationState validationState)
=> (validationState & ValidationState.ProductStateMask).ToString(ProductStateOffset);
public static string ToSCNodeStateString(this ValidationState validationState)
=> (validationState & ValidationState.SCNodeStateMask).ToString(SCNodeStateOffset);
public static string ToTransferStateString(this ValidationState validationState)
=> (validationState & ValidationState.TransferStateMask).ToString(TransferStateOffset);