Я написал метод, который извлекает поля из объекта следующим образом:
private static string GetHTMLStatic(ref Object objectX, ref List<string> ExludeFields)
{
Type objectType = objectX.GetType();
FieldInfo[] fieldInfo = objectType.GetFields();
foreach (FieldInfo field in fieldInfo)
{
if(!ExludeFields.Contains(field.Name))
{
DisplayOutput += GetHTMLAttributes(field);
}
}
return DisplayOutput;
}
Каждое поле в моем классе также имеет свои собственные атрибуты, в этом случае мой атрибут называется HTMLAttributes. Внутри цикла foreach я пытаюсь получить атрибуты для каждого поля и их соответствующие значения. В настоящее время это выглядит так:
private static string GetHTMLAttributes(FieldInfo field)
{
string AttributeOutput = string.Empty;
HTMLAttributes[] htmlAttributes = field.GetCustomAttributes(typeof(HTMLAttributes), false);
foreach (HTMLAttributes fa in htmlAttributes)
{
//Do stuff with the field's attributes here.
}
return AttributeOutput;
}
Мой класс атрибутов выглядит так:
[AttributeUsage(AttributeTargets.Field,
AllowMultiple = true)]
public class HTMLAttributes : System.Attribute
{
public string fieldType;
public string inputType;
public HTMLAttributes(string fType, string iType)
{
fieldType = fType.ToString();
inputType = iType.ToString();
}
}
Это кажется логичным, но не компилируется, у меня есть красная волнистая линия в методе GetHTMLAttributes () под:
field.GetCustomAttributes(typeof(HTMLAttributes), false);
Поле, из которого я пытаюсь извлечь атрибуты, находится в другом классе, используемом так:
[HTMLAttributes("input", "text")]
public string CustomerName;
Из моего понимания (или его отсутствия) это должно работать? Пожалуйста, расширьте кругозор, коллеги-разработчики!
* Редактировать, ошибка компилятора :
Невозможно неявно преобразовать тип
'object []' to 'data.HTMLAttributes []'.
Явное преобразование существует (вы
пропустил актерский состав?)
Я пытался разыграть его так:
(HTMLAttributes)field.GetCustomAttributes(typeof(HTMLAttributes), false);
Но это также не работает, я получаю эту ошибку компилятора:
Невозможно преобразовать тип 'object []' в
'Data.HTMLAttributes'