├── Galador.Reflection.chm
├── TestAndroid
├── Resources
│ ├── drawable
│ │ └── Icon.png
│ ├── values
│ │ └── Strings.xml
│ ├── layout
│ │ ├── Main.axml
│ │ └── LayoutTest.axml
│ └── AboutResources.txt
├── Properties
│ ├── AndroidManifest.xml
│ └── AssemblyInfo.cs
├── MainActivity.cs
├── packages.config
├── TestAdapter.cs
└── TestAndroid.csproj
├── TestApp
├── App.config
├── TestForm.cs
├── TestApp.csproj
├── Program.cs
├── StreamTests.cs
├── RegistryTests.cs
├── PathTests.cs
├── TestForm.Designer.cs
├── DocumentTest.cs
└── TestForm.resx
├── Galador.Reflection
├── Serialization
│ ├── IDeserialized.cs
│ ├── PropertyPathInfo.cs
│ ├── ObjectData.cs
│ ├── LostData.cs
│ ├── SerializationSettings.cs
│ ├── IO
│ │ ├── IPrimitiveReader.cs
│ │ ├── IPrimitiveWriter.cs
│ │ ├── TokenPrimitiveWriter.cs
│ │ ├── PrimitiveTextWriter.cs
│ │ ├── PrimitiveBinaryWriter.cs
│ │ ├── PrimitiveBinaryReader.cs
│ │ └── PrimitiveTextReader.cs
│ ├── Serializer.cs
│ ├── SerializationAttributes.cs
│ └── Writer.cs
├── Galador.Reflection.csproj
├── README.txt
├── Utils
│ ├── ReferenceEqualityComparer.cs
│ ├── KnownAssemblies.cs
│ ├── MemberList.cs
│ ├── CollectionEx.cs
│ ├── FastMethod.cs
│ ├── TypeTree.cs
│ ├── PrimitiveType.cs
│ └── TypeDescription.cs
└── Registry.cs
├── LICENSE.txt
├── TestNETCore
├── TestNETCore.csproj
└── Program.cs
├── .gitattributes
├── SHBDocumentation.shfbproj
├── Galador.Reflection.sln
├── .gitignore
├── registry.md
└── README.md
/Galador.Reflection.chm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/superlloyd/Galador.Reflection/HEAD/Galador.Reflection.chm
--------------------------------------------------------------------------------
/TestAndroid/Resources/drawable/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/superlloyd/Galador.Reflection/HEAD/TestAndroid/Resources/drawable/Icon.png
--------------------------------------------------------------------------------
/TestApp/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/TestAndroid/Resources/values/Strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Start Tests
4 | TestAndroid
5 |
6 |
--------------------------------------------------------------------------------
/TestAndroid/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/TestApp/TestForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 |
11 | namespace TestApp
12 | {
13 | public partial class TestForm : Form
14 | {
15 | public TestForm()
16 | {
17 | InitializeComponent();
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Galador.Reflection/Serialization/IDeserialized.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Galador.Reflection.Serialization
6 | {
7 | ///
8 | /// This method will be called on deserialized object for further deserialization
9 | /// post processing. It will be called immediately on value type and when the whole
10 | /// object tree has been process on value type.
11 | ///
12 | public interface IDeserialized
13 | {
14 | ///
15 | /// On completion of the deserialization process this method will be called.
16 | ///
17 | void OnDeserialized(LostData lost);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/TestAndroid/Resources/layout/Main.axml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
11 |
17 |
--------------------------------------------------------------------------------
/Galador.Reflection/Galador.Reflection.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net472;net10.0
5 | preview
6 | enable
7 |
8 |
9 |
10 |
11 | Galador.Reflection
12 | Lloyd Dupont
13 | 1.1.0
14 | https://github.com/superlloyd/Galador.Reflection
15 | Here one can find:
16 | - A binary, strongly typed, yet verssion tolerant serializer (Serializer class).
17 | - Yet another type resolver (Registry class).
18 | - Fast Reflection type (FastType class)
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Galador.Reflection/README.txt:
--------------------------------------------------------------------------------
1 | .NET Framework and .NET Core target both use Emit and DynamicMethod
2 | .NET Standard profile no emit/DynamicMethod, since Android and iOS don't support emit (only compile but not run), hence using .NET Standard 2.0 profile.
3 | .NET Framework also use System.Configuration and App.Settings[] to turn log traces on or off at launch time
4 |
5 | How to Publish
6 | ==============
7 | 0] Manage API keys @ https://www.nuget.org/account/apikeys
8 | 1] https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package-dotnet-cli
9 | 2] https://docs.microsoft.com/en-us/nuget/nuget-org/publish-a-package
10 | 3] run those commands
11 | dotnet pack -c Release .\Galador.Reflection\Galador.Reflection.csproj
12 | cd .\Galador.Reflection\bin\Release\
13 | ..\..\..\..\nuget push .\Galador.Reflection.1.1.0.nupkg -Source https://api.nuget.org/v3/index.json -ApiKey '=== INSERT API KEY HERE ==='
14 |
15 |
--------------------------------------------------------------------------------
/TestApp/TestApp.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net9.0-windows
5 | true
6 | True
7 | enable
8 | preview
9 | false
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Galador.Reflection/Utils/ReferenceEqualityComparer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Runtime.CompilerServices;
4 | using System.Text;
5 |
6 | namespace Galador.Reflection.Utils
7 | {
8 | public class ReferenceEqualityComparer : IEqualityComparer
9 | where T : class
10 | {
11 | public int GetHashCode(T value)
12 | {
13 | return RuntimeHelpers.GetHashCode(value);
14 | }
15 |
16 | public bool Equals(T left, T right)
17 | {
18 | return Object.ReferenceEquals(left, right);
19 | }
20 | }
21 |
22 | public class ReferenceEqualityComparer : IEqualityComparer