У меня есть два интерфейса IndexField
и BatchField
. Они не относятся к одному базовому классу . Оба имеют свойство Name
. Итак, учитывая этот метод
private void Initialize(IEnumerable fields)
{
List<string> fieldNames = new List<string>();
foreach (object fld in fields)
{
string name = string.Empty;
if (fld is IndexField indexField)
{
name = indexField.Name;
}
else if (fld is BatchField batchField)
{
name = batchField.Name;
}
fieldNames.Add(name);
}
// Do something ...
}
Я передаю коллекцию batchfields
или indexfields
в качестве параметра. Я хочу присвоить свойству name новый список строк.
Я знаю, что могу передать List<string> fieldNames
в качестве параметра метода, но мой вопрос:
Есть ли способ избежать операторов if и вызвать свойство Name
, хотя я не знаю правильный тип интерфейса?
Я начал с этого кода и подумал, что он будет хорошим, но, возможно, есть что-то вроде
List<string> fieldNames = new List<string>();
foreach (object fld in fields)
{
fieldNames.Add(fld.Name); // fld might be an IndexField or BatchField interface
}