fe2a6db786
rust / build / test / clippy / fmt (push) Has been cancelled
Layout:
- src/ .NET 10 x64 reference: MxNativeCodec, MxNativeClient,
MxAsbClient, probes, tests, harnesses. Executable spec.
- design/ Architectural plan for the Rust port (M0–M6), error
model, protocol invariants, risks (R1–R16), adversarial
review log (review.md).
- rust/ Rust workspace. M0 skeleton + M1 codec parity.
mxaccess-codec: 215 unit tests + 2 cross-implementation
parity tests (byte-identical against .NET reference).
Other crates are M0 stubs awaiting M2+.
- captures/ Frida + netsh + pcap evidence per CLAUDE.md
("captures are evidence, not throwaway logs").
- analysis/ Decompiled C# (frida/proxy/decompiled-*),
Ghidra exports for native DLLs (`exports/` only —
working state at `projects/` and AVEVA's input
binaries at `input/` are gitignored).
- docs/ Reverse-engineering reference docs.
- tools/ Setup-LiveProbeEnv.ps1 (Infisical credential fetcher),
Compute-Crc.ps1 (.NET parity helper).
- .github/workflows/ Rust CI: fmt + build + test + clippy on Windows.
- LICENSE MIT (Joseph Doherty, 2026).
Verified:
- cargo test --workspace → 217 passed (215 unit + 2 .NET parity), 0 failed
- cargo clippy --workspace -- -D warnings → clean
- cargo fmt --all -- --check → clean
- cargo publish --dry-run -p mxaccess-codec → packages cleanly
Excluded from history (see .gitignore):
- **/bin, **/obj, **/target — build artifacts
- analysis/ghidra/projects/ — Ghidra working state (regenerable)
- analysis/ghidra/input/ — AVEVA proprietary DLLs (vendor IP)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4224 lines
89 KiB
C#
4224 lines
89 KiB
C#
using System;
|
|
using System.CodeDom.Compiler;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace ArchestrAServices.Contract;
|
|
|
|
public class VariantReader
|
|
{
|
|
public Variant Value { get; set; }
|
|
|
|
public VariantReader(Variant value)
|
|
{
|
|
Value = value;
|
|
}
|
|
|
|
public DataType GetVariantType()
|
|
{
|
|
return EnumFactory.IntToDataType(Value.Type);
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsByte()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = Value.Payload[0];
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (byte)Convert.ChangeType(obj, typeof(byte));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsInt16()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = BitConverter.ToInt16(Value.Payload, 0);
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (short)Convert.ChangeType(obj, typeof(short));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsUInt16()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = BitConverter.ToUInt16(Value.Payload, 0);
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (ushort)Convert.ChangeType(obj, typeof(ushort));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsInt32()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = BitConverter.ToInt32(Value.Payload, 0);
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (int)Convert.ChangeType(obj, typeof(int));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsUInt32()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = BitConverter.ToUInt32(Value.Payload, 0);
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (uint)Convert.ChangeType(obj, typeof(uint));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsInt64()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = BitConverter.ToInt64(Value.Payload, 0);
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (long)Convert.ChangeType(obj, typeof(long));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsUInt64()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = BitConverter.ToUInt64(Value.Payload, 0);
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (ulong)Convert.ChangeType(obj, typeof(ulong));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsFloat()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = BitConverter.ToSingle(Value.Payload, 0);
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (float)Convert.ChangeType(obj, typeof(float));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsDouble()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = BitConverter.ToDouble(Value.Payload, 0);
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (double)Convert.ChangeType(obj, typeof(double));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsString()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = Encoding.Unicode.GetString(Value.Payload);
|
|
return obj;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (string)Convert.ChangeType(obj, typeof(string));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public object GetAsBool()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = Convert.ToBoolean(Value.Payload[0]);
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (bool)Convert.ChangeType(obj, typeof(bool));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public object GetAsSByte()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = (sbyte)Value.Payload[0];
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (sbyte)Convert.ChangeType(obj, typeof(sbyte));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public object GetAsDateTime()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = DateTime.FromFileTimeUtc(BitConverter.ToInt64(Value.Payload, 0));
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (DateTime)Convert.ChangeType(obj, typeof(DateTime));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public object GetAsDuration()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = TimeSpan.FromTicks(BitConverter.ToInt64(Value.Payload, 0));
|
|
return obj;
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (TimeSpan)Convert.ChangeType(obj, typeof(TimeSpan));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public object GetAsGuid()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
{
|
|
string g = (string)GetAsString();
|
|
obj = new Guid(g);
|
|
return obj;
|
|
}
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = ((!(obj.GetType() == typeof(string))) ? ((object)(Guid)Convert.ChangeType(obj, typeof(Guid))) : ((object)new Guid((string)obj)));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public byte[] GetAsByteString()
|
|
{
|
|
return Value.Payload;
|
|
}
|
|
|
|
public string GetAsLocalizedText()
|
|
{
|
|
return (string)GetAsString();
|
|
}
|
|
|
|
public object GetScalarValue(DataType targetType)
|
|
{
|
|
object obj = null;
|
|
try
|
|
{
|
|
switch (EnumFactory.IntToDataType(Value.Type))
|
|
{
|
|
case DataType.TypeBool:
|
|
obj = GetAsBool();
|
|
if (DataType.TypeBool == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeByte:
|
|
obj = GetAsByte();
|
|
if (targetType == DataType.TypeByte)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeDateTime:
|
|
obj = GetAsDateTime();
|
|
if (targetType == DataType.TypeByte)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeDouble:
|
|
obj = GetAsDouble();
|
|
if (DataType.TypeDouble == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeDuration:
|
|
obj = GetAsDuration();
|
|
if (DataType.TypeDuration == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeFloat:
|
|
obj = GetAsFloat();
|
|
if (DataType.TypeFloat == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeGuid:
|
|
obj = GetAsGuid();
|
|
if (DataType.TypeGuid == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeInt16:
|
|
obj = GetAsInt16();
|
|
if (DataType.TypeInt16 == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeInt32:
|
|
obj = GetAsInt32();
|
|
if (DataType.TypeInt32 == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeInt64:
|
|
obj = GetAsInt64();
|
|
if (DataType.TypeInt64 == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeLocalizedText:
|
|
obj = GetAsLocalizedText();
|
|
if (DataType.TypeLocalizedText == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeSByte:
|
|
obj = GetAsSByte();
|
|
if (DataType.TypeSByte == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeString:
|
|
obj = GetAsString();
|
|
if (DataType.TypeString == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeUInt16:
|
|
obj = GetAsUInt16();
|
|
if (DataType.TypeUInt16 == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeUInt32:
|
|
obj = GetAsUInt32();
|
|
if (DataType.TypeUInt32 == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
case DataType.TypeUInt64:
|
|
obj = GetAsUInt64();
|
|
if (DataType.TypeUInt64 == targetType)
|
|
{
|
|
return obj;
|
|
}
|
|
return GetValueInTargetType(targetType, obj);
|
|
default:
|
|
return GetAsString();
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return obj;
|
|
}
|
|
}
|
|
|
|
public object GetValueInTargetArrayType(DataType targetType)
|
|
{
|
|
switch (targetType)
|
|
{
|
|
case DataType.TypeBool:
|
|
{
|
|
bool[] array14 = (bool[])GetAsBoolArray();
|
|
if (array14 != null && array14.Length != 0)
|
|
{
|
|
return array14;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeByte:
|
|
{
|
|
byte[] array8 = (byte[])GetAsByteArray();
|
|
if (array8 != null && array8.Length != 0)
|
|
{
|
|
return array8;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeDateTime:
|
|
{
|
|
DateTime[] array15 = (DateTime[])GetAsDateTimeArray();
|
|
if (array15 != null && array15.Length != 0)
|
|
{
|
|
return array15;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeDouble:
|
|
{
|
|
double[] array11 = (double[])GetAsDoubleArray();
|
|
if (array11 != null && array11.Length != 0)
|
|
{
|
|
return array11;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeDuration:
|
|
{
|
|
TimeSpan[] array6 = (TimeSpan[])GetAsDurationArray();
|
|
if (array6 != null && array6.Length != 0)
|
|
{
|
|
return array6;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeFloat:
|
|
{
|
|
float[] array12 = (float[])GetAsFloatArray();
|
|
if (array12 != null && array12.Length != 0)
|
|
{
|
|
return array12;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeGuid:
|
|
{
|
|
Guid[] array10 = (Guid[])GetAsGuidArray();
|
|
if (array10 != null && array10.Length != 0)
|
|
{
|
|
return array10;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeInt16:
|
|
{
|
|
short[] array3 = (short[])GetAsInt16Array();
|
|
if (array3 != null && array3.Length != 0)
|
|
{
|
|
return array3;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeInt32:
|
|
{
|
|
int[] array4 = (int[])GetAsInt32Array();
|
|
if (array4 != null && array4.Length != 0)
|
|
{
|
|
return array4;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeInt64:
|
|
{
|
|
long[] array7 = (long[])GetAsInt64Array();
|
|
if (array7 != null && array7.Length != 0)
|
|
{
|
|
return array7;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeSByte:
|
|
{
|
|
sbyte[] array2 = (sbyte[])GetAsSByteArray();
|
|
if (array2 != null && array2.Length != 0)
|
|
{
|
|
return array2;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeUInt16:
|
|
{
|
|
ushort[] array13 = (ushort[])GetAsUInt16Array();
|
|
if (array13 != null && array13.Length != 0)
|
|
{
|
|
return array13;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeUInt32:
|
|
{
|
|
uint[] array9 = (uint[])GetAsUInt32Array();
|
|
if (array9 != null && array9.Length != 0)
|
|
{
|
|
return array9;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeUInt64:
|
|
{
|
|
ulong[] array5 = (ulong[])GetAsUInt64Array();
|
|
if (array5 != null && array5.Length != 0)
|
|
{
|
|
return array5;
|
|
}
|
|
return Value;
|
|
}
|
|
case DataType.TypeUnknown:
|
|
return Value;
|
|
default:
|
|
{
|
|
string[] array = (string[])GetAsStringArray();
|
|
if (array != null && array.Length != 0)
|
|
{
|
|
return array;
|
|
}
|
|
return Value;
|
|
}
|
|
}
|
|
}
|
|
|
|
private static object GetValueInTargetType(DataType targetType, object retValue)
|
|
{
|
|
return targetType switch
|
|
{
|
|
DataType.TypeBool => Convert.ChangeType(retValue, typeof(bool)),
|
|
DataType.TypeByte => Convert.ChangeType(retValue, typeof(byte)),
|
|
DataType.TypeDateTime => Convert.ChangeType(retValue, typeof(DateTime)),
|
|
DataType.TypeDouble => Convert.ChangeType(retValue, typeof(double)),
|
|
DataType.TypeDuration => Convert.ChangeType(retValue, typeof(long)),
|
|
DataType.TypeFloat => Convert.ChangeType(retValue, typeof(float)),
|
|
DataType.TypeGuid => Convert.ChangeType(retValue, typeof(Guid)),
|
|
DataType.TypeInt16 => Convert.ChangeType(retValue, typeof(short)),
|
|
DataType.TypeInt32 => Convert.ChangeType(retValue, typeof(int)),
|
|
DataType.TypeInt64 => Convert.ChangeType(retValue, typeof(long)),
|
|
DataType.TypeSByte => Convert.ChangeType(retValue, typeof(sbyte)),
|
|
DataType.TypeUInt16 => Convert.ChangeType(retValue, typeof(ushort)),
|
|
DataType.TypeUInt32 => Convert.ChangeType(retValue, typeof(uint)),
|
|
DataType.TypeUInt64 => Convert.ChangeType(retValue, typeof(ulong)),
|
|
_ => Convert.ChangeType(retValue, typeof(string)),
|
|
};
|
|
}
|
|
|
|
public object GetArrayValue(DataType targetType)
|
|
{
|
|
object obj = new object();
|
|
try
|
|
{
|
|
return GetValueInTargetArrayType(targetType);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsEnum()
|
|
{
|
|
object obj = null;
|
|
object result = null;
|
|
try
|
|
{
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsBool();
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
if (Value.Payload.Count() == 1)
|
|
{
|
|
obj = GetAsByte();
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
obj = GetAsSByte();
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
if (Value.Payload.Count() == 2)
|
|
{
|
|
obj = GetAsUInt16();
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsUInt32();
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsUInt64();
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsFloat();
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDouble();
|
|
}
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
if (Value.Payload.Count() == 8)
|
|
{
|
|
obj = GetAsDuration();
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
if (Value.Payload.Count() == 4)
|
|
{
|
|
obj = GetAsDateTime();
|
|
}
|
|
break;
|
|
case DataType.TypeEnum:
|
|
{
|
|
CustomEnum customEnum = default(CustomEnum);
|
|
int num = 0;
|
|
int num2 = 0;
|
|
customEnum.ordinal = BitConverter.ToInt16(Value.Payload, num);
|
|
num += 2;
|
|
num2 = BitConverter.ToInt32(Value.Payload, num) * 2;
|
|
num += 4;
|
|
customEnum.OrdinalValue = Encoding.Unicode.GetString(Value.Payload, num, num2);
|
|
obj = customEnum;
|
|
break;
|
|
}
|
|
case DataType.TypeUnknown:
|
|
obj = Value;
|
|
break;
|
|
default:
|
|
obj = GetAsString();
|
|
break;
|
|
}
|
|
if (obj != null)
|
|
{
|
|
result = (CustomEnum)Convert.ChangeType(obj, typeof(CustomEnum));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
result = obj;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
result = obj;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public Array GetAsGenericArray()
|
|
{
|
|
Type type = CalculateVariableType();
|
|
if (type == null)
|
|
{
|
|
return new uint[0];
|
|
}
|
|
int num = 0;
|
|
uint num2 = BitConverter.ToUInt32(Value.Payload, num);
|
|
num += 4;
|
|
int[] array = new int[num2];
|
|
int[] array2 = new int[num2];
|
|
for (int i = 0; i < num2; i++)
|
|
{
|
|
array[i] = (int)BitConverter.ToUInt32(Value.Payload, num);
|
|
num += 4;
|
|
array2[i] = 0;
|
|
}
|
|
Array array3 = Array.CreateInstance(type, array);
|
|
UnpackArray(Value.Payload, ref num, array3, array2, 0);
|
|
return array3;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
private Type CalculateVariableType()
|
|
{
|
|
return GetVariantType() switch
|
|
{
|
|
DataType.TypeByteArray => typeof(byte),
|
|
DataType.TypeCharArray => typeof(char),
|
|
DataType.TypeInt16Array => typeof(short),
|
|
DataType.TypeUInt16Array => typeof(ushort),
|
|
DataType.TypeInt32Array => typeof(int),
|
|
DataType.TypeUInt32Array => typeof(uint),
|
|
DataType.TypeInt64Array => typeof(long),
|
|
DataType.TypeUInt64Array => typeof(ulong),
|
|
DataType.TypeFloatArray => typeof(float),
|
|
DataType.TypeDoubleArray => typeof(double),
|
|
DataType.TypeStringArray => typeof(string),
|
|
DataType.TypeDateTimeArray => typeof(DateTime),
|
|
DataType.TypeGuidArray => typeof(Guid),
|
|
DataType.TypeByteStringArray => typeof(byte[]),
|
|
DataType.TypeBoolArray => typeof(bool),
|
|
DataType.TypeSByteArray => typeof(sbyte),
|
|
_ => null,
|
|
};
|
|
}
|
|
|
|
private static void UnpackArray(byte[] Payload, ref int PayloadIndex, Array valueArray, int[] DimensionIndices, int Dimension)
|
|
{
|
|
if (Dimension == DimensionIndices.Count() - 1)
|
|
{
|
|
Type elementType = valueArray.GetType().GetElementType();
|
|
for (int i = 0; i < valueArray.GetLength(Dimension); i++)
|
|
{
|
|
DimensionIndices[Dimension] = i;
|
|
UnpackArrayElement(Payload, ref PayloadIndex, elementType, valueArray, DimensionIndices);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (int j = 0; j < valueArray.GetLength(Dimension); j++)
|
|
{
|
|
DimensionIndices[Dimension] = j;
|
|
UnpackArray(Payload, ref PayloadIndex, valueArray, DimensionIndices, Dimension + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
private static void UnpackArrayElement(byte[] Payload, ref int PayloadIndex, Type valueType, Array valueArray, int[] DimensionIndices)
|
|
{
|
|
if (Payload != null && valueArray != null)
|
|
{
|
|
if (valueType == typeof(bool))
|
|
{
|
|
valueArray.SetValue(Payload[PayloadIndex] != 0, DimensionIndices);
|
|
PayloadIndex++;
|
|
}
|
|
else if (valueType == typeof(sbyte))
|
|
{
|
|
valueArray.SetValue(Payload[PayloadIndex], DimensionIndices);
|
|
PayloadIndex++;
|
|
}
|
|
else if (valueType == typeof(byte))
|
|
{
|
|
valueArray.SetValue(Payload[PayloadIndex], DimensionIndices);
|
|
PayloadIndex++;
|
|
}
|
|
else if (valueType == typeof(ushort))
|
|
{
|
|
valueArray.SetValue(BitConverter.ToUInt16(Payload, PayloadIndex), DimensionIndices);
|
|
PayloadIndex += 2;
|
|
}
|
|
else if (valueType == typeof(uint))
|
|
{
|
|
valueArray.SetValue(BitConverter.ToUInt32(Payload, PayloadIndex), DimensionIndices);
|
|
PayloadIndex += 4;
|
|
}
|
|
else if (valueType == typeof(ulong))
|
|
{
|
|
valueArray.SetValue(BitConverter.ToUInt64(Payload, PayloadIndex), DimensionIndices);
|
|
PayloadIndex += 8;
|
|
}
|
|
else if (valueType == typeof(short))
|
|
{
|
|
valueArray.SetValue(BitConverter.ToInt16(Payload, PayloadIndex), DimensionIndices);
|
|
PayloadIndex += 2;
|
|
}
|
|
else if (valueType == typeof(int))
|
|
{
|
|
valueArray.SetValue(BitConverter.ToInt32(Payload, PayloadIndex), DimensionIndices);
|
|
PayloadIndex += 4;
|
|
}
|
|
else if (valueType == typeof(long))
|
|
{
|
|
valueArray.SetValue(BitConverter.ToInt64(Payload, PayloadIndex), DimensionIndices);
|
|
PayloadIndex += 8;
|
|
}
|
|
else if (valueType == typeof(float))
|
|
{
|
|
valueArray.SetValue(BitConverter.ToSingle(Payload, PayloadIndex), DimensionIndices);
|
|
PayloadIndex += 4;
|
|
}
|
|
else if (valueType == typeof(double))
|
|
{
|
|
valueArray.SetValue(BitConverter.ToDouble(Payload, PayloadIndex), DimensionIndices);
|
|
PayloadIndex += 8;
|
|
}
|
|
else if (valueType == typeof(string))
|
|
{
|
|
uint count = BitConverter.ToUInt32(Payload, PayloadIndex);
|
|
PayloadIndex += 4;
|
|
char[] chars = new UnicodeEncoding().GetChars(Payload, PayloadIndex, (int)count);
|
|
valueArray.SetValue(new string(chars), DimensionIndices);
|
|
}
|
|
else if (valueType == typeof(DateTime))
|
|
{
|
|
long ticks = BitConverter.ToInt32(Payload, PayloadIndex);
|
|
PayloadIndex += 4;
|
|
valueArray.SetValue(new DateTime(ticks), DimensionIndices);
|
|
}
|
|
else if (valueType == typeof(Guid))
|
|
{
|
|
byte[] array = new byte[16];
|
|
Array.Copy(Payload, PayloadIndex, array, 0, 16);
|
|
PayloadIndex += 16;
|
|
Guid guid = new Guid(array);
|
|
valueArray.SetValue(guid, DimensionIndices);
|
|
}
|
|
else if (valueType == typeof(byte[]))
|
|
{
|
|
uint num = BitConverter.ToUInt32(Payload, PayloadIndex);
|
|
PayloadIndex += 4;
|
|
byte[] array2 = new byte[num];
|
|
Array.Copy(Payload, PayloadIndex, array2, 0L, num);
|
|
PayloadIndex += (int)num;
|
|
valueArray.SetValue(array2, DimensionIndices);
|
|
}
|
|
}
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsInt32Array()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
if (Value.Payload.Count() >= 4)
|
|
{
|
|
int[] array2 = new int[Value.Length / 4];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array2[num2] = BitConverter.ToInt32(Value.Payload, num);
|
|
num += 4;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
return new int[0];
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
int[] array3 = new int[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (int)Convert.ChangeType(array.GetValue(i), typeof(int));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsByteArray()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
return Value.Payload;
|
|
}
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
byte[] array2 = new byte[array.Length];
|
|
for (int i = 0; i < array2.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array2[i] = (byte)Convert.ChangeType(array.GetValue(i), typeof(byte));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array2;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public char[] GetAsCharArray()
|
|
{
|
|
if (Value.Payload.Count() >= 2)
|
|
{
|
|
char[] array = new char[Value.Length / 2];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array[num2] = BitConverter.ToChar(Value.Payload, num);
|
|
num += 2;
|
|
num2++;
|
|
}
|
|
return array;
|
|
}
|
|
return new char[0];
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsInt16Array()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
if (Value.Payload.Count() >= 2)
|
|
{
|
|
short[] array2 = new short[Value.Length / 2];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array2[num2] = BitConverter.ToInt16(Value.Payload, num);
|
|
num += 2;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
short[] array3 = new short[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (short)Convert.ChangeType(array.GetValue(i), typeof(short));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsUInt16Array()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
if (Value.Payload.Count() >= 2)
|
|
{
|
|
ushort[] array2 = new ushort[Value.Length / 2];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array2[num2] = BitConverter.ToUInt16(Value.Payload, num);
|
|
num += 2;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
ushort[] array3 = new ushort[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (ushort)Convert.ChangeType(array.GetValue(i), typeof(ushort));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsUInt32Array()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
if (Value.Payload.Count() >= 4)
|
|
{
|
|
uint[] array2 = new uint[Value.Length / 4];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array2[num2] = BitConverter.ToUInt32(Value.Payload, num);
|
|
num += 4;
|
|
num2++;
|
|
}
|
|
array = array2;
|
|
}
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
uint[] array3 = new uint[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (uint)Convert.ChangeType(array.GetValue(i), typeof(uint));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsInt64Array()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeInt64Array:
|
|
case DataType.TypeDurationArray:
|
|
if (Value.Payload.Count() >= 8)
|
|
{
|
|
long[] array2 = new long[Value.Length / 8];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array2[num2] = BitConverter.ToInt64(Value.Payload, num);
|
|
num += 8;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
long[] array3 = new long[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (long)Convert.ChangeType(array.GetValue(i), typeof(long));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsUInt64Array()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
if (Value.Payload.Count() >= 8)
|
|
{
|
|
ulong[] array2 = new ulong[Value.Length / 8];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array2[num2] = BitConverter.ToUInt64(Value.Payload, num);
|
|
num += 8;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
ulong[] array3 = new ulong[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (ulong)Convert.ChangeType(array.GetValue(i), typeof(ulong));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsFloatArray()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
if (Value.Payload.Count() >= 4)
|
|
{
|
|
float[] array2 = new float[Value.Length / 4];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array2[num2] = BitConverter.ToSingle(Value.Payload, num);
|
|
num += 4;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
float[] array3 = new float[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (float)Convert.ChangeType(array.GetValue(i), typeof(float));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsDoubleArray()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
if (Value.Payload.Count() >= 8)
|
|
{
|
|
double[] array2 = new double[Value.Length / 8];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array2[num2] = BitConverter.ToDouble(Value.Payload, num);
|
|
num += 8;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
double[] array3 = new double[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (double)Convert.ChangeType(array.GetValue(i), typeof(double));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsStringArray()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeGuidArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
{
|
|
if (Value.Payload.Count() <= 4)
|
|
{
|
|
break;
|
|
}
|
|
Queue<string> queue = new Queue<string>();
|
|
uint num = 0u;
|
|
int num2;
|
|
for (num2 = 0; num2 < Value.Length; num2 += (int)num)
|
|
{
|
|
num = BitConverter.ToUInt32(Value.Payload, num2);
|
|
if (num2 + num >= Value.Length)
|
|
{
|
|
break;
|
|
}
|
|
num2 += 4;
|
|
queue.Enqueue(Encoding.Unicode.GetString(Value.Payload, num2, (int)num));
|
|
}
|
|
return queue.ToArray();
|
|
}
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
string[] array2 = new string[array.Length];
|
|
for (int i = 0; i < array2.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array2[i] = (string)Convert.ChangeType(array.GetValue(i), typeof(string));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array2;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsDateTimeArray()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
if (Value.Payload.Count() >= 8)
|
|
{
|
|
DateTime[] array2 = new DateTime[Value.Length / 8];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
long fileTime = BitConverter.ToInt64(Value.Payload, num);
|
|
array2[num2] = DateTime.FromFileTimeUtc(fileTime);
|
|
num += 8;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
DateTime[] array3 = new DateTime[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (DateTime)Convert.ChangeType(array.GetValue(i), typeof(DateTime));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsDurationArray()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
if (Value.Payload.Count() >= 8)
|
|
{
|
|
TimeSpan[] array2 = new TimeSpan[Value.Length / 8];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
long value = BitConverter.ToInt64(Value.Payload, num);
|
|
array2[num2] = TimeSpan.FromTicks(value);
|
|
num += 8;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
TimeSpan[] array3 = new TimeSpan[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (TimeSpan)Convert.ChangeType(array.GetValue(i), typeof(TimeSpan));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsGuidArray()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
if (Value.Payload.Count() > 4)
|
|
{
|
|
string[] array2 = (string[])GetAsStringArray();
|
|
Guid[] array3 = new Guid[array2.Length];
|
|
for (int i = 0; i < array2.Length; i++)
|
|
{
|
|
array3[i] = new Guid(array2[i]);
|
|
}
|
|
return array3;
|
|
}
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
Guid[] array4 = new Guid[array.Length];
|
|
for (int j = 0; j < array4.Length; j++)
|
|
{
|
|
try
|
|
{
|
|
if (array.GetValue(j).GetType() == typeof(string))
|
|
{
|
|
string g = (string)array.GetValue(j);
|
|
array4[j] = new Guid(g);
|
|
}
|
|
else
|
|
{
|
|
array4[j] = (Guid)Convert.ChangeType(array.GetValue(j), typeof(Guid));
|
|
}
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array4;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsBoolArray()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
bool[] array2 = new bool[Value.Length / 1];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array2[num2] = BitConverter.ToBoolean(Value.Payload, num);
|
|
num++;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
bool[] array3 = new bool[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (bool)Convert.ChangeType(array.GetValue(i), typeof(bool));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return array;
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsSByteArray()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
if (Value.Payload.Count() >= 1)
|
|
{
|
|
sbyte[] array2 = new sbyte[Value.Length];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
while (num < Value.Length)
|
|
{
|
|
array2[num2] = (sbyte)Value.Payload[num];
|
|
num++;
|
|
num2++;
|
|
}
|
|
return array2;
|
|
}
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
}
|
|
if (array != null)
|
|
{
|
|
sbyte[] array3 = new sbyte[array.Length];
|
|
for (int i = 0; i < array3.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array3[i] = (sbyte)Convert.ChangeType(array.GetValue(i), typeof(sbyte));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array3;
|
|
}
|
|
return new sbyte[0];
|
|
}
|
|
|
|
[GeneratedCode("Manually Avoid Code Metrics", "0.0.0.0")]
|
|
public object GetAsEnumArray()
|
|
{
|
|
Array array = null;
|
|
switch (GetVariantType())
|
|
{
|
|
case DataType.TypeBool:
|
|
case DataType.TypeBoolArray:
|
|
array = (bool[])GetAsBoolArray();
|
|
break;
|
|
case DataType.TypeDuration:
|
|
case DataType.TypeDurationArray:
|
|
array = (TimeSpan[])GetAsDurationArray();
|
|
break;
|
|
case DataType.TypeByte:
|
|
case DataType.TypeByteString:
|
|
case DataType.TypeByteArray:
|
|
case DataType.TypeByteStringArray:
|
|
array = (byte[])GetAsByteArray();
|
|
break;
|
|
case DataType.TypeSByte:
|
|
case DataType.TypeSByteArray:
|
|
array = (sbyte[])GetAsSByteArray();
|
|
break;
|
|
case DataType.TypeInt16:
|
|
case DataType.TypeInt16Array:
|
|
array = (short[])GetAsInt16Array();
|
|
break;
|
|
case DataType.TypeUInt16:
|
|
case DataType.TypeUInt16Array:
|
|
array = (ushort[])GetAsUInt16Array();
|
|
break;
|
|
case DataType.TypeInt32:
|
|
case DataType.TypeInt32Array:
|
|
array = (int[])GetAsInt32Array();
|
|
break;
|
|
case DataType.TypeUInt32:
|
|
case DataType.TypeUInt32Array:
|
|
array = (uint[])GetAsUInt32Array();
|
|
break;
|
|
case DataType.TypeInt64:
|
|
case DataType.TypeInt64Array:
|
|
array = (long[])GetAsInt64Array();
|
|
break;
|
|
case DataType.TypeUInt64:
|
|
case DataType.TypeUInt64Array:
|
|
array = (ulong[])GetAsUInt64Array();
|
|
break;
|
|
case DataType.TypeFloat:
|
|
case DataType.TypeFloatArray:
|
|
array = (float[])GetAsFloatArray();
|
|
break;
|
|
case DataType.TypeDouble:
|
|
case DataType.TypeDoubleArray:
|
|
array = (double[])GetAsDoubleArray();
|
|
break;
|
|
case DataType.TypeString:
|
|
case DataType.TypeLocalizedText:
|
|
case DataType.TypeStringArray:
|
|
case DataType.TypeLocalizedTextArray:
|
|
array = (string[])GetAsStringArray();
|
|
break;
|
|
case DataType.TypeDateTime:
|
|
case DataType.TypeDateTimeArray:
|
|
array = (DateTime[])GetAsDateTimeArray();
|
|
break;
|
|
case DataType.TypeGuid:
|
|
case DataType.TypeGuidArray:
|
|
array = (Guid[])GetAsGuidArray();
|
|
break;
|
|
case DataType.TypeEnum:
|
|
case DataType.TypeEnumArray:
|
|
{
|
|
int num = 0;
|
|
List<CustomEnum> list = new List<CustomEnum>();
|
|
int num2;
|
|
for (num2 = 0; num2 < Value.Length; num2 += num)
|
|
{
|
|
CustomEnum item = new CustomEnum
|
|
{
|
|
ordinal = BitConverter.ToInt16(Value.Payload, num2)
|
|
};
|
|
num2 += 2;
|
|
num = BitConverter.ToInt32(Value.Payload, num2) * 2;
|
|
if (num2 + num >= Value.Payload.Length)
|
|
{
|
|
break;
|
|
}
|
|
num2 += 4;
|
|
item.OrdinalValue = Encoding.Unicode.GetString(Value.Payload, num2, num);
|
|
list.Add(item);
|
|
}
|
|
array = list.ToArray();
|
|
break;
|
|
}
|
|
}
|
|
if (array != null)
|
|
{
|
|
CustomEnum[] array2 = new CustomEnum[array.Length];
|
|
for (int i = 0; i < array2.Length; i++)
|
|
{
|
|
try
|
|
{
|
|
array2[i] = (CustomEnum)Convert.ChangeType(array.GetValue(i), typeof(CustomEnum));
|
|
}
|
|
catch (InvalidCastException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
return array;
|
|
}
|
|
catch (OverflowException)
|
|
{
|
|
return array;
|
|
}
|
|
}
|
|
return array2;
|
|
}
|
|
return array;
|
|
}
|
|
}
|