private Member( MemberType memberType, Type type, MemberInfo memberInfo, IAccessFactory accessFactory = null, bool isReadable = true, bool isWriteable = true, bool isRoot = false) : this( memberType, memberInfo.Name, memberInfo.DeclaringType, type, accessFactory, isReadable, isWriteable, isRoot) { MemberInfo = memberInfo; }
private Member( MemberType memberType, string name, Type declaringType, Type type, IAccessFactory accessFactory = null, bool isReadable = true, bool isWriteable = true, bool isRoot = false) { MemberType = memberType; Name = name; DeclaringType = declaringType; Type = type; _accessFactory = accessFactory; IsReadable = isReadable; IsWriteable = isWriteable; IsRoot = isRoot; _hashCode = declaringType.GetHashCode(); unchecked { _hashCode = (_hashCode * 397) ^ name.GetHashCode(); } JoiningName = (isRoot || this.IsEnumerableElement()) ? name : "." + name; IsEnumerable = type.IsEnumerable(); if (IsEnumerable) { IsComplex = IsDictionary = type.IsDictionary(); ElementType = Type.GetEnumerableElementType(); return; } IsSimple = type.IsSimple(); IsComplex = !IsSimple; }