Ignore Public Static Properties
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)