Ignore Public Static Properties
bluebat-swiss opened this issue · 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:
-
extended AdvancedSharpSerializerBinarySettings with two new properties
public bool IncludeStaticProperties { get; set; }
public bool IncludeNonPublicProperties { get; set; }
-
extended the PropertyProvider with two new properties
public bool IncludeStatic { get; set; }
public bool IncludeNonPublic { get; set; }
-
assigning the props in SharpSerializer.initialize()
PropertyProvider.IncludeNonPublic = settings.AdvancedSettings.IncludeNonPublicProperties;
PropertyProvider.IncludeStatic = settings.AdvancedSettings.IncludeStaticProperties;
-
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)