/// <summary> /// Builds a metadata for a member /// </summary> /// <returns></returns> public MemberMetadata Build() { var metadata = this._successorMetadataBuilder.Build(); var result = new MemberMetadata(metadata, this._memberInfo); MemberMetadataSerializer serializer; if (!this._isSkipped) { if (metadata.GetType().IsGenericType) { serializer = (MemberMetadataSerializer)Activator.CreateInstance(typeof(MemberMetadataSerializer <>).MakeGenericType( metadata.GetType().GetGenericArguments().First()), result); } else { serializer = new MemberMetadataSerializer(result); } } else { serializer = new SkippedMemberMetadataSerializer(result); } result.SetSerializer(serializer); return(result); }
/// <summary> /// Sets a serializer to use /// </summary> /// <param name="serializer">An instance of serializer to use</param> public void SetSerializer(MemberMetadataSerializer serializer) { this._serializer = serializer; }