using System; using System.Collections.Generic; using System.Reflection; using System.Threading; namespace MongoDB.Bson.Serialization { /// /// mongodb在unity3d上的bug,这几个函数用来辅助修改bug /// public static class ReaderWriterLockExtension { public static void EnterReadLock(this ReaderWriterLock locker) { locker.AcquireReaderLock(100000); } public static void EnterWriteLock(this ReaderWriterLock locker) { locker.AcquireWriterLock(100000); } public static void ExitReadLock(this ReaderWriterLock locker) { locker.ReleaseReaderLock(); } public static void ExitWriteLock(this ReaderWriterLock locker) { locker.ReleaseWriterLock(); } } public static class TypeExtension { public static MemberInfo[] GetMember2(this Type type, string name, MemberTypes memberTypes, BindingFlags bindingFlags) { MemberInfo[] members = type.GetMember(name, memberTypes, bindingFlags); List membersList = new List(); foreach (MemberInfo info in members) { if ((bindingFlags & BindingFlags.DeclaredOnly) != 0 && info.DeclaringType != type) { continue; } membersList.Add(info); } return membersList.ToArray(); } public static MemberInfo[] GetMember2(this Type type, string name, BindingFlags bindingFlags) { MemberInfo[] members = type.GetMember(name, bindingFlags); List membersList = new List(); foreach (MemberInfo info in members) { if ((bindingFlags & BindingFlags.DeclaredOnly) != 0 && info.DeclaringType != type) { continue; } membersList.Add(info); } return membersList.ToArray(); } } }