static RepresentedType RegisterType(string typeName, Type type) { var resolved = new RepresentedType { Name = type?.ToSerializableName() ?? typeName }; fromStringMap [resolved.Name] = resolved; if (type != null) { resolved.ResolvedType = type; fromTypeMap [type] = resolved; } return(resolved); }
internal RepresentedMemberInfo(SerializationInfo info, StreamingContext context) { MemberKind = (RepresentedMemberKind)info.GetValue(nameof(MemberKind), typeof(RepresentedMemberKind)); Name = info.GetString(nameof(Name)); CanWrite = info.GetBoolean(nameof(CanWrite)); var declaringTypeName = info.GetString(nameof(DeclaringType)); if (declaringTypeName != null) { DeclaringType = RepresentedType.Lookup(declaringTypeName); } var memberType = info.GetString(nameof(MemberType)); if (memberType != null) { MemberType = RepresentedType.Lookup(memberType); } }
internal RepresentedMemberInfo(RepresentedType declaringType, MemberInfo memberInfo) { if (declaringType == null) { throw new ArgumentNullException(nameof(declaringType)); } if (memberInfo == null) { throw new ArgumentNullException(nameof(memberInfo)); } resolved = true; if (memberInfo is FieldInfo) { MemberKind = RepresentedMemberKind.Field; MemberType = RepresentedType.Lookup(((FieldInfo)memberInfo).FieldType); CanWrite = true; // TODO: Or only if public? } else if (memberInfo is PropertyInfo) { var propertyInfo = (PropertyInfo)memberInfo; MemberKind = RepresentedMemberKind.Property; MemberType = RepresentedType.Lookup(propertyInfo.PropertyType); CanWrite = propertyInfo.CanWrite && propertyInfo.GetSetMethod() != null; } else { throw new ArgumentException("must be FieldInfo or PropertyInfo", nameof(memberInfo)); } Name = memberInfo.Name; ResolvedMemberInfo = memberInfo; DeclaringType = declaringType; }
public RepresentedMemberInfo(MemberInfo memberInfo) : this(RepresentedType.Lookup(memberInfo?.DeclaringType), memberInfo) { }
object IObjectReference.GetRealObject(StreamingContext context) { return(RepresentedType.Lookup(Name)); }