using System;
using System.Collections;
using System.Reflection;
namespace Utils.Documentation {
public class TypeDocumenter {
private Type _type;
private MethodInfo[] _methods;
public TypeDocumenter(Type type) {
Debug.Assert(type != null);
_type = type;
_methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly); }
public MethodDocumenter[] Methods {
get {
ArrayList retval = new ArrayList();
foreach (MethodInfo m in _methods) {
if (! m.IsSpecialName) {
retval.Add(new MethodDocumenter(m)); }}
return (MethodDocumenter[]) retval.ToArray(typeof(MethodDocumenter)); }}
public DocumentationParser XmlDocumentation(DocumentationReader docreader) {
Debug.Assert(docreader != null);
return new DocumentationParser(docreader.GetXmlDocumentationForType(_type)); }}}
This style feels and looks very natural to me, and I am going to start using it for all C# code I write from now on (which is very little - I do 90% of my development in Python).
I use a combination of VIM and Visual Studio .NET when developing C# code. The VIM editor handles this brace style very naturally. I haven't had time to tinker with VS.NET's indentation settings yet.
Notice that the namespace declaration has the same indent level as the class declaration. I have always done this when programming C#, since the horizontal whitespace used for indenting a class does not add any information.
Previously I used the Allman/Emacs brace style, BTW.