В моем приложении MVVM есть класс модели MessageModel, который содержит следующие конструкторы:
public class MessageModel
{
// Private fields here
public MessageModel()
{
}
public MessageModel(MessageType msgType, DateTime dateTime, string strSource, string strText)
{
this._type = msgType;
this._dateTime = dateTime;
this._source = strSource;
this._text = strText;
}
// Public properties here
}
В виду модель у меня есть ниже объявление:
ObservableCollection<MessageModel> myMessages = new ObservableCollection<MessageModel>();
Теперь мне нужно добавлять элементы в эту коллекцию всегда на первой позиции (в начале), поэтому я делаю:
myMessages.Insert(0, new MessageModel() {
// values here
});
Как и я, если часто я хочу реализовать метод расширения для коллекции, как это (он не компилируется):
public static class CollectionExtensions
{
public static void Insert<T>(this ObservableCollection<T> collection, MessageType messageType, IParticipant sender, string strText) where T : MessageModel
{
collection.Insert(0, new T()
{
MessageType = messageType,
MessageDateTime = DateTime.Now,
MessageSource = sender.ParticipantName,
MessageText = strText
});
}
}
Тогда я могу сделать:
myMessages.Insert(messageType, sender, text);
Это возможно? Если да, то как?
Я использую Visual Studio 2008 и NET Framework 3.5