У меня есть базовый DTO.Он имеет атрибут Required
и ErrorMessage
.Я использую Cecil
, чтобы попытаться получить значение свойства ErrorMessage
, но значение для него пустое.
т.е.
public class FooDto
{
[Required(ErrorMessage = "Cannot be empty")]
public string Bar { get; set;}
}
Так я получаю атрибут:
var myLib = AssemblyDefinition.ReadAssembly(@"C:\lib.dll");
var type = myLib.MainModule.GetType("Namespace.FooDto");
foreach (var prop in type.Properties)
{
foreach (var customattr in prop.CustomAttributes)
{
foreach (var customProp in customattr.Properties)
{
if (customProp.Name == "ErrorMessage")
Console.WriteLine(customProp.Argument.Value.ToString()); // this is always empty string
}
}
}
РЕДАКТИРОВАТЬ: Если я использую классическое отражение, я могу получить значение ErrorMessage
, но я хочу использовать Сесил, потому что я уже делаю другие вещи с библиотекой в моем коде и нене хочу гибридного подхода.