Я не уверен, смогу ли я это сделать или нет, но я создаю сервисный уровень приложения, которому нужно добавить один тип объекта в другой.Примером может быть добавление статьи в категорию.Это делается через класс обслуживания, например:
public class ArticleService {
public IResponse AddArticleToCategory(IAddRelatedItemRequest<Category, Article> request) {
// do stuff with the request
}
}
Я бы хотел, чтобы интерфейс IAddRelatedItemRequest был универсальным, чтобы его можно было использовать для любого запроса на добавление, например:
public interface IAddRelatedItemRequest<T, U>
where T : class
where U : class {
Object Key { get;set; }
List<Object> RelatedKey { get;set; }
}
То, что происходит, заключается в том, что для запроса требуется первичный ключ элемента (например, категория) и список первичных ключей связанных элементов (например, статьи).Класс AddCommentToArticle в конкретном ArticleService затем извлекает элемент по его ключу, а затем добавляет к нему связанные ключевые элементы.
(NB. Чего я не хочу, так это предоставить фактическую сущность и список связанных сущностей - это нужно сделать через примитивные первичные ключи)
Я хочу строго напечататьзапросить каким-либо образом, поэтому вместо поставляемого объекта и списка объектов я могу предоставить (например) Guid и список целых чисел.
Я не особо хочу предоставлять эти два типа через Genericsтак как это делает код менее читаемым, а ключи объектов могут потенциально изменить тип.
В идеале я хотел бы как-то извлечь тип идентификатора сущности и включить его в интерфейс.Это возможно?