Я пытаюсь написать пару расширений для некоторых типов, с которыми я работаю. Базовый тип - «InputField». «ListField» наследуется от «InputField». Я покажу, что я пытаюсь сделать:Написание расширений для унаследованных типов
public static void LoadInputField(this InputField input, CustomField field)
{
SetValues(ref input, field);
}
public static void LoadInputField(this ListField input, CustomField field)
{
SetValues(ref input, field);
var optionItems = (from o in field.CustomFieldOptions
select new ListItem(o.OptionLabel, o.CustomFieldOptionId.ToString()));
input.AddChoices(optionItems.ToList());
}
private static void SetValues(ref InputField input, CustomField field)
{
input.CustomFieldId = field.CustomFieldId;
input.ResponseTitle = field.ColumnName;
input.Prompt = field.ColumnCaption;
input.DisplayOrder = field.SortOrder;
input.Required = !string.IsNullOrEmpty(field.ColumnRequiredMessage);
input.ErrorClass = "text-danger";
if (input.Required)
input.RequiredMessage = field.ColumnRequiredMessage;
}
Расширение для ошибок типа ListField на SetValues (исх ввода, поле) ;. В сообщении говорится: 'Тип аргумента' ref 'не соответствует типу параметра.'
Возможно, это не лучший способ сделать это, но я открыт для вариантов.
Зачем вам нужен 'ref' в этом случае? Я не вижу причин использовать его ... –
Здесь вам не нужно использовать 'ref', просто удалите' ref', и он должен работать. –