in src/SimplCommerce.Infrastructure/Models/ExtendableObjectExtensions.cs [70:114]
public static void SetData<T>(this IExtendableObject extendableObject, string name, T value, JsonSerializer jsonSerializer)
{
CheckNotNull(extendableObject, name);
if (jsonSerializer == null)
{
jsonSerializer = JsonSerializer.CreateDefault();
}
if (extendableObject.ExtensionData == null)
{
if (EqualityComparer<T>.Default.Equals(value, default(T)))
{
return;
}
extendableObject.ExtensionData = "{}";
}
var json = JObject.Parse(extendableObject.ExtensionData);
if (value == null || EqualityComparer<T>.Default.Equals(value, default(T)))
{
if (json[name] != null)
{
json.Remove(name);
}
}
else if (TypeHelper.IsPrimitiveExtendedIncludingNullable(value.GetType()))
{
json[name] = new JValue(value);
}
else
{
json[name] = JToken.FromObject(value, jsonSerializer);
}
var data = json.ToString(Formatting.None);
if (data == "{}")
{
data = null;
}
extendableObject.ExtensionData = data;
}