private bool IsMarkedSerializeAsPrimitive(PropertyInfo pi)
{
if(Attribute.IsDefined(pi, typeof(SerializeAsPrimitive))) return true;
var attrs = pi.GetCustomAttributes(true).ToDictionary(a => a.GetType().Name, a => a);
foreach(string name in attrs.Keys)
{
if(name.ToLower().Contains("serializeasprimitive")) return true;
}
return false;
}