using System.Runtime.InteropServices;
public static void Main()
var accessor = new TestProperty() {IsConfirmation = true};
var wrappedValue = new Value(true);
bool? metaValue = (bool?)wrappedValue;
Console.WriteLine(accessor.IsConfirmation);
Console.WriteLine(metaValue.Value);
if (accessor.IsConfirmation != metaValue.Value)
Console.WriteLine($"Shouldn't get here {accessor.IsConfirmation} != {metaValue.Value}");
Console.WriteLine("What happened?") ;
Console.WriteLine("Worked as expected");
public Value(bool initial)
_data.BooleanField = initial;
_data.GuidField = new Guid("7cb8a2c8-4bb7-4374-94b2-c9232d20ec46");
public static explicit operator bool?(Value valueToCast)
return valueToCast._data.BooleanField;
[StructLayout(LayoutKind.Explicit)]
public bool BooleanField;
public bool IsConfirmation;