Добавьте файлы проекта.
This commit is contained in:
36
ArgumentsToolkit.Help/Collectors/HelpCollector.cs
Normal file
36
ArgumentsToolkit.Help/Collectors/HelpCollector.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
|
||||
namespace ArgumentsToolkit.Help;
|
||||
|
||||
/// <summary>
|
||||
/// Сборщик информации о параметрах из модели Options.
|
||||
/// </summary>
|
||||
public static class HelpCollector
|
||||
{
|
||||
/// <summary>
|
||||
/// Собирает метаданные о параметрах из указанной модели Options.
|
||||
/// </summary>
|
||||
public static HelpModel Collect<T>()
|
||||
{
|
||||
var model = new HelpModel();
|
||||
var props = typeof(T).GetProperties();
|
||||
|
||||
foreach (var prop in props)
|
||||
{
|
||||
var opt = prop.GetCustomAttribute<OptionAttribute>();
|
||||
if (opt == null) continue;
|
||||
|
||||
model.Entries.Add(new HelpEntry
|
||||
{
|
||||
Name = opt.Name,
|
||||
ShortName = opt.ShortName,
|
||||
Description = opt.Description,
|
||||
TypeName = prop.PropertyType.Name,
|
||||
Required = opt.Required,
|
||||
DefaultValue = opt.DefaultValue
|
||||
});
|
||||
}
|
||||
|
||||
return model;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user