SharpSerializer can serialize types like: multidimensional array, nested array, array-of-arrays, polymorphic object (where value is inherited from the property type), generic type, generic listing (i.e. dictionary, collection) and many more, with a single line of code
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;
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()
Hope, this helps someone with the same problem. Cheers, jaz (bluebat)