CSharp · Console
using System;
using VarDump;
using VarDump.Visitor;
using VarDump.Visitor.Descriptors;
using VarDump.Visitor.Descriptors.Specific;
// For more examples see https://github.com/ycherkes/VarDump/blob/main/test/VarDump.UnitTests/ObjectDescriptorMiddlewareSpec.cs
var obj = new
{
FullName = "BRUCE LEE",
CardNumber = "4953089013607",
OtherInfo = new
{
CardNumber = "5201294442453002",
}
};
var options = new DumpOptions
{
Descriptors =
{
new ObjectContentReplacer { Replacement = MaskCardNumber }
}
};
var csDumper = new CSharpDumper(options);
var cs = csDumper.Dump(obj);
var vbDumper = new VisualBasicDumper(options);
var vb = vbDumper.Dump(obj);
// C# string
Console.WriteLine(cs);
// VB string
Console.WriteLine(vb);
static ReflectionDescription MaskCardNumber(ReflectionDescription description)
{
if (!IsCardNumber(description) || string.IsNullOrWhiteSpace((string)description.Value))
{
return description;
}
var stringValue = (string)description.Value;
var maskedValue = stringValue.Length - 4 > 0
? new string('*', stringValue.Length - 4) + stringValue.Substring(stringValue.Length - 4)
: stringValue;
return description with
{
Value = maskedValue
};
static bool IsCardNumber(ReflectionDescription description)
{
return description.Type == typeof(string)
&& description.Name?.EndsWith("cardnumber", StringComparison.OrdinalIgnoreCase) == true;
}
}