Как насчет использования анонимных объектов?Так, например, у вас может быть метод в вашем хранилище, который возвращает System.Object
:
public interface IRepository
{
object GetModel(int id);
}
Затем, в зависимости от хранимой процедуры, которую вы вызываете, вы получите другой анонимный тип:
public class RepositorySql : IRepository
{
public object GetModel(int id)
{
// TODO: Call a stored procedure and depending on the procedure you are
// calling return a different anonymous type, for example:
return new
{
Column1 = "value1",
Column2 = "value2",
}
}
}
и, наконец, в вашем контроллере:
public ActionResult Index(int id)
{
var model = _repository.GetModel(id);
return Json(model);
}
Теперь, конечно, представление, потребляющее это действие, должно знать, какие столбцы есть в объекте JSON.Я бы порекомендовал вам использовать какой-то базовый тип вместо System.Object
, из которого будут производиться другие модели и который содержал бы общие свойства.
Я действительно не знаю ваших требований, но если это просто вопрос возврата некоторыхсписок значений, которые будут варьироваться в зависимости от хранимой процедуры, вы можете просто вернуть IEnumerable<string>
.