Обошел это сейчас.Вместо наследования FormCollection
теперь у него есть собственное поле 'form
', которое вместо этого FormCollection
, и его команды просто действуют на это.
Редактировать:
Люди спрашиваликоды, так что вот старый класс:
using System;
using System.Linq.Expressions;
using System.Web.Mvc;
using OpenProjects.Core;
namespace ProjectSupport.Web.Test
{
public class FormFor<TEntity> : FormCollection where TEntity : class
{
public FormFor<TEntity> Set<TReturn>(Expression<Func<TEntity, TReturn>> property, string value)
{
this[property.PropertyName()] = value;
return this;
}
}
}
И вот как это сейчас:
using System;
using System.Linq.Expressions;
using System.Web.Mvc;
using OpenProjects.Core;
namespace ProjectSupport.Web.Test
{
public class FormFor<TEntity> where TEntity : class
{
private FormCollection form;
public FormFor()
{
form = new FormCollection();
}
public FormFor<TEntity> Set<TResult>(Expression<Func<TEntity, TResult>> property, string value)
{
form.Add(property.PropertyName(), value);
return this;
}
public FormCollection ToForm()
{
return form;
}
}
}
Для пояснения того, почему это используется, а не связующие модели, это былоиспользуется только для тестирования, чтобы легко и быстро макетировать формы.