Вы можете настроить таргетинг на детей определенного типа в Umbraco следующим образом:
IEnumerable<YourModel> childrenOfType = model.Children<YourModel>();
Это вернет всех потомков модели с типом YourModel
- в сущности, она объединяет Where()
и a Cast<T>()
Чтобы ответить на ваш вопрос «возможно ли это», ответ «нет».
Вы не можете иметь «строго типизированный список объектов», который вы ищете, потому чтов C # список (или другой IEnumerable) всегда является списком общего типа, например List<ACommonType>
.В случае Umbraco все они имеют интерфейс IPublishedContent
.Вы можете перебирать этот список и определять фактический тип каждого объекта.В Umbraco IPublishedContent в списке фактически не использует типы из ModelsBuilder до тех пор, пока вы их не приведете.
foreach(IPublishedContent c in collectionOfIPublishedContent)
{
// basic if
if (c.DocumentTypeAlias == YourModel.ModelTypeAlias)
{
YourModel stronglyTypedContent = c as YourModel;
// do some stuff
}
// or switch...
switch (c.DocumentTypeAlias)
{
case YourModel.ModelTypeAlias:
YourModel stronglyTypedContent2 = c as YourModel;
// do a thing
break;
}
// or use implicit casts with null checking
YourModel stronglyTypedContent3 = c as YourModel;
if (stronglyTypedContent3 != null)
{
// congrats, your content is of the type YourModel
}
}