2015-01-10 144 views
0

我正在为我正在开发的项目制作一个MSDN样式文档站点。我想知道是否有办法遍历所有类,包括它们的公共属性/方法,并获取其网页生成的摘要和其他属性。下面详细说明:c#遍历文档生成的所有类属性和方法

为I类需要的名称空间+摘要+继承的类+类定义语法+公共构造+公共属性+公有方法

实施例:

namespace foo 
{ 
    /// <summary> 
    /// ss 
    /// </summary> 
    public class bar : ClassA, InterfaceA 
    { 
     public bar(int a, int b) 
     { 
     } 

     public int Property1 { get;set; } 

     public int Method1(int a) 
     { 
      return 1; 
     } 
    } 
} 

命名空间= FOO
摘要= ss
继承的类= ClassA
类定义语法= public class bar : ClassA, InterfaceA
public const ructors =栏(INT,INT)
公共属性= Property1
公共方法方法1 =(int)的

,并为所有的方法,属性我需要的类型,如果它是只读等。

长话短说,基本上我想要尽可能地生成MSDN中的信息。任何帮助或想法表示赞赏。

+0

反射?也许罗斯林。 – MarcinJuraszek

+0

@MarcinJuraszek反射无法得到总结.... – Steve

+0

做这里提到的任何解决方案有帮助吗? http://stackoverflow.com/questions/641364/c-sharp-documentation-generator – adv12

回答

0

我已经建立了一个功能很久以前,通过类PropertyInfo遍历我的模型类,它发现了属性的属性并提供对属性元数据的访问。

然后我没有手动输入所有领域

发现下面的代码

public static string GenerateInsertQuery(IModel model) 
{ 
    Type myType = model.GetType(); 
    string query = "INSERT INTO [" + myType.Name + "] ("; 
    IList<PropertyInfo> props = new List<PropertyInfo>(myType.GetProperties()); 
    string[] nonDBFields = { "isValid", "isChanged", "CREATEDON", "CHANGEDON", "CHANGEDBY" }; 

    foreach (PropertyInfo prop in props) 
    { 
     if (prop.Name == nonDBFields[0] || prop.Name == nonDBFields[1] || prop.Name == nonDBFields[3] || prop.Name == nonDBFields[4]) 
     { 
      continue; 
     } 
     else 
      query += "[" + prop.Name + "] , "; 
    } 

    query.Remove(query.LastIndexOf(","), 1); 
    query += ") VALUES ("; 

    foreach (PropertyInfo prop in props) 
    { 
     if (prop.Name == nonDBFields[0] || prop.Name == nonDBFields[1] || prop.Name == nonDBFields[3] || prop.Name == nonDBFields[4]) 
     { 
      continue; 
     } 
     else 
     { 
      if (prop.Name == nonDBFields[2]) 
      { 
       query += "GETDATE(),"; 
       continue; 
      } 
      else 
      { 
       query += " @" + prop.Name + ", "; 
       continue; 
      } 
     } 
    } 

    query.Remove(query.LastIndexOf(','), 1); 
    query += ")"; 

    return query; 
} 
0

有这个开源解决方案的产生头痛为我所需要的SQL插入查询。 http://jimblackler.net/blog/?p=49

注意:它解决了您的解决方案的XML文档输出。

来自博客:

在Visual Studio中建立自己的项目,包括XML注释。

(注意,XML文档输出默认情况下,在 Visual Studio中未启用。转到您的项目属性,选择Build,并 下的输出部分检查说XML文档文件的对话框。它 是非常重要的您不改变XML文件的位置 或者此方法在运行时将无法找到它。)