从文档的对象映射元数据生成文档?



我有兴趣了解是否可以使用反射从代码生成文档。我对在方法中使用的映射赋值特别感兴趣。理想情况下,我想捕获方法名称以进行分组,然后捕获该方法中的任何对象属性分配。理想情况下,我还会捕获分配的对象属性。

using System;
using System.ComponentModel;
using System.Reflection;
namespace PrintMethodContents
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Paladin newPaladin = new Paladin()
{
Height = 5.6,
Stones = 300
};
Warlock newWarlock = new Warlock()
{
Height = 5.6,
Stones = 250
};
ICharacterClass convertedCharacter = CharacterClassConversion.ConvertCharacterClass(
newPaladin, 
CharacterClasses.WARLOCK);
System.Type type = convertedCharacter.GetType();
PropertyInfo[] myArray = type.GetProperties();
Console.Write("Printing Properties for Object " + type.Name + "n");
foreach (PropertyInfo myParam in myArray)
{
Console.Write(myParam.Name + "n");
}
}
}
public enum CharacterClasses
{
WARLOCK,
PALADIN
}
public static class CharacterClassConversion
{
public static ICharacterClass ConvertCharacterClass(ICharacterClass originClass, CharacterClasses classType)
{
switch (classType)
{
case CharacterClasses.WARLOCK:
Warlock newWarlock = new Warlock
{
Height = originClass.Height,
Stones = originClass.Stones
};
return newWarlock;
case CharacterClasses.PALADIN:
Paladin newPaladin = new Paladin
{
Height = originClass.Height,
Stones = originClass.Stones
};
return newPaladin;
default:
return originClass;
}
}
}
public interface ICharacterClass
{
double Height { get; set; }
double Stones { get; set; }
}
class Paladin : ICharacterClass
{
public double Height { get; set; }
public double Stones { get; set; }
}
class Warlock : ICharacterClass
{
public double Height { get; set; }
public double Stones { get; set; }
}
}

我想达到我的输出如下所示的地步。

CharacterClassConversion
WARLOCK
Height came from originClass Height
Stones came from originClass Stones
Paladin
Height came from originClass Height
Stones came from originClass Stones

抱歉,我没有时间给出正确的答案,但您可以尝试查看:

  • 用于分析 IL 字节码的 Mono.Cecil 库:https://www.mono-project.com/docs/tools+libraries/libraries/Mono.Cecil/

  • 用于分析 C# 代码的 Roslyn API:https://joshvarty.com/2015/03/24/learn-roslyn-now-control-flow-analysis/

最新更新