mirror of
https://github.com/msgpack/msgpack-python.git
synced 2026-02-07 10:19:51 +00:00
csharp: add ObjectPacker
This commit is contained in:
parent
68a98d3dd0
commit
60643f023f
8 changed files with 404 additions and 6 deletions
28
csharp/msgpack/ReflectionCacheEntry.cs
Normal file
28
csharp/msgpack/ReflectionCacheEntry.cs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
|
||||
namespace msgpack
|
||||
{
|
||||
public class ReflectionCacheEntry
|
||||
{
|
||||
const BindingFlags FieldBindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField | BindingFlags.SetField;
|
||||
|
||||
public ReflectionCacheEntry (Type t)
|
||||
{
|
||||
FieldInfo[] fields = t.GetFields (FieldBindingFlags);
|
||||
IDictionary<string, FieldInfo> map = new Dictionary<string, FieldInfo> (fields.Length);
|
||||
for (int i = 0; i < fields.Length; i ++) {
|
||||
FieldInfo f = fields[i];
|
||||
string name = f.Name;
|
||||
int pos;
|
||||
if (name[0] == '<' && (pos = name.IndexOf ('>')) > 1)
|
||||
name = name.Substring (1, pos - 1); // Auto-Property (\<.+\>) <ab>
|
||||
map[name] = f;
|
||||
}
|
||||
FieldMap = map;
|
||||
}
|
||||
|
||||
public IDictionary<string, FieldInfo> FieldMap { get; private set; }
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue