SharpSerializer icon indicating copy to clipboard operation
SharpSerializer copied to clipboard

Ignore Public Static Properties

Open bluebat-swiss opened this issue 3 years ago • 0 comments

Hi

There is a problem with TypeExtensions.GetPublicInstanceProperties(). it get's also all static and nonpublic properties.

A short blink into ILSpy I saw that GetRuntimeProperties() will call GetProperties(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic). So GetPublicInstanceProperties() will also get static and nonpublic properties.

I changed the code to solve this problem:

  1. extended AdvancedSharpSerializerBinarySettings with two new properties public bool IncludeStaticProperties { get; set; } public bool IncludeNonPublicProperties { get; set; }

  2. extended the PropertyProvider with two new properties public bool IncludeStatic { get; set; } public bool IncludeNonPublic { get; set; }

  3. assigning the props in SharpSerializer.initialize() PropertyProvider.IncludeNonPublic = settings.AdvancedSettings.IncludeNonPublicProperties; PropertyProvider.IncludeStatic = settings.AdvancedSettings.IncludeStaticProperties;

  4. finally changed PropertyProvider.GetAllProperties()

protected virtual PropertyInfo[] GetAllProperties(Type type)
{
  var flags = BindingFlags.Instance | BindingFlags.Public;
  
  if (IncludeStatic)
    flags |= BindingFlags.Static;
  
  if (IncludeNonPublic)
    flags |= BindingFlags.NonPublic;
  
  return type.GetProperties(flags);
}

Hope, this helps someone with the same problem. Cheers, jaz (bluebat)

bluebat-swiss avatar Feb 02 '22 10:02 bluebat-swiss