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