我正在为我正在进行的项目制作一个MSDN样式的文档站点。我想知道是否有办法遍历所有类,包括它们的公共属性/方法,并获取它们的摘要和网页生成的其他属性。详情如下:
for Class I需要Name space + summary + inherited class + class definition syntax + public constructors + public properties + public methods
示例:
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;
}
}
}
namespace = foo
summary = ss
继承的class = ClassA
类定义语法= public class bar : ClassA, InterfaceA
public constructors = bar(int,int)
公共财产= Property1
public Methods = Method1(int)
并且对于所有方法,我需要类型的属性,如果它是只读的等等。
长话短说,基本上我想尽可能多地生成MSDN中的信息。任何帮助或想法表示赞赏。
答案 0 :(得分:0)
我在很久以前就构建了一个函数,通过类PropertyInfo
遍历我的模型类,它发现属性的属性并提供对属性元数据的访问。
然后我为我生成所需的SQL插入查询,而不必担心手动输入所有字段
找到下面的代码
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;
}
答案 1 :(得分:0)
有一个开源解决方案。 http://jimblackler.net/blog/?p=49
注意:它为您的解决方案的XML文档输出提供了一种解决方法。
来自博客:
在Visual Studio中,设置包含XML注释的自己的项目。
(请注意,默认情况下不启用XML文档输出 视觉工作室。转到项目属性,选择Build,然后选择 “输出”部分选中“XML文档文件”框。它 非常重要的是不要更改XML文件的位置 或者此方法无法在运行时找到它。)