예제 #1
0
        public void GetMemberSignature_MethodWithParams()
        {
            var methodInfo     = typeof(MemberSignatureTestClass).GetMethod("MethodWithParams");
            var output         = _memberSignatureUtility.GetMemberSignature(methodInfo);
            var expectedOutput = _outputFormatter.CreateMethodMarkup(methodInfo.Name, methodInfo.ReturnType, methodInfo.GetParameters());

            Assert.That(output.ToString(), Is.EqualTo(expectedOutput.ToString()));
        }
        public void GenerateXml_InterfaceWithMembers()
        {
            var reportGenerator = CreateMemberReportGenerator(typeof(IDisposable), null);
            var output          = reportGenerator.GenerateXml();

            var expectedOutput = new XElement(
                "Members",
                new XElement(
                    "Member",
                    new XAttribute("id", "0"),
                    new XAttribute("type", MemberTypes.Method),
                    new XAttribute("name", "Dispose"),
                    new XAttribute("is-declared-by-this-class", true),
                    _outputFormatter.CreateModifierMarkup("", "public abstract"),
                    _outputFormatter.CreateMethodMarkup("Dispose", typeof(void), new ParameterInfo[0])
                    )
                );

            XElementComparisonHelper.Compare(output, expectedOutput);
        }
        public XElement GetMemberSignature(MemberInfo memberInfo)
        {
            ArgumentUtility.CheckNotNull("memberInfo", memberInfo);

            switch (memberInfo.MemberType)
            {
            case MemberTypes.Method:
                var methodInfo = (MethodInfo)memberInfo;
                return(_outputFormatter.CreateMethodMarkup(methodInfo.Name, methodInfo.ReturnType, methodInfo.GetParameters(), methodInfo.GetGenericArguments()));

            case MemberTypes.Constructor:
                var constructorInfo = (ConstructorInfo)memberInfo;
                return(_outputFormatter.CreateConstructorMarkup(_outputFormatter.GetConstructorName(memberInfo.DeclaringType), constructorInfo.GetParameters()));

            case MemberTypes.Event:
                var eventInfo = (EventInfo)memberInfo;
                return(_outputFormatter.CreateEventMarkup(eventInfo.Name, eventInfo.EventHandlerType));

            case MemberTypes.Field:
                var fieldInfo = (FieldInfo)memberInfo;
                return(_outputFormatter.CreateFieldMarkup(fieldInfo.Name, fieldInfo.FieldType));

            case MemberTypes.Property:
                var propertyInfo = (PropertyInfo)memberInfo;
                return(_outputFormatter.CreatePropertyMarkup(propertyInfo.Name, propertyInfo.PropertyType));

            case MemberTypes.NestedType:
                var nestedType = (Type)memberInfo;
                return(_outputFormatter.CreateNestedTypeMarkup(nestedType));

            case MemberTypes.Custom:
            case MemberTypes.TypeInfo:
                return(null);

            default:
                throw new Exception("unknown member type");
            }
        }