Я ищу наиболее подходящий способ работы с фидом пользовательских действий на моем сайте социальной сети. На данный момент у меня есть несколько видов деятельности, которые могут появиться на ленте новостей, таких как:NHibernate + ASP.Net MVC + Активность пользователя
- Пользователи присоединяется к сайту
- Комментарии пользователей на пост
- Пользователь добавляет сообщение в своих любимцев добавляет
- Пользователь новый пост на сайте
Вот упрощенная версия моего домена объекты на данный момент:
public abstract class NewsItem : Entity, ITenantSpecific
{
public virtual Account Account { get; set; }
public virtual DateTime DateTime { get; set; }
// returns formatted news html string which gets
// overridden by inherted classes
public abstract string GetNewsHtml();
}
public class NewsItemJoiner : NewsItem
{
public virtual Account AccountJoined { get; set; }
public override string GetNewsHtml()
{
return "XXX has just joined our music network";
}
}
Как вы можете видеть, на данный момент у меня есть свойство, которое должно быть переопределено при каждом действии, которое называется GetNewsHtml
. Это не идеально, поскольку я не считаю, что мой домен должен отвечать за создание моего HTML.
Я подумал об использовании частичного вида для каждого вида деятельности и передал в него базовый класс NewsItem
, опущенный в правильный тип.
Однако я открыт для предложений.
спасибо за ответ. Похоже, именно то, что мне нужно сделать, и передает ответственность моего дисплея на уровень контроллера. Спасибо! –
Я пытаюсь запустить все это, однако я борюсь с разработкой, как вызвать GetRenderer, когда у меня есть список различных типов NewsItem (например, столяр, обновление статуса и т. Д.). У вас есть решение для этого? –
Я добавил ответ о том, как это сделать без IoC. Ответ на IoC зависит от разных контейнеров (Windsor и т. Д.), Поэтому я не могу дать общий. Для ручной реализации простое кэширование ускорит решение. – queen3