Я использую jQuery для получения объекта JSON из метода страницы. У меня есть DAL, который использует SubSonic, и если я верну объекты, созданные из классов, сгенерированных SubSonic, я засорю каналы. :) Вы знаете, все общедоступные свойства сериализуются. Мне не нужен отдельный бизнес-уровень для этого приложения, потому что он небольшой и ориентирован на операции чтения, а еще один уровень кажется излишним. Чтобы избежать загрузки некоторых раздутых объектов SubSonic (возможно, также с конфиденциальной информацией) и избежать создания отдельного слоя, я попытался вернуть список объектов, например:
[WebMethod]
public static List<object> GetFiles()
{
FileCollection collection = DB
.Select()
.From(DataAccess.File.Schema)
.ExecuteAsCollection<FileCollection>();
List<object> files = new List<object>(collection.Count);
foreach (DataAccess.File file in collection)
{
files.Add(new {
file.FileId,
file.ApplicantFirstName,
file.ApplicantLastName,
file.UploadDate
}
);
}
return files;
}
Это работает, и в ответ я получаю хороший объект JSON (не обращая внимания на значение DateTime):
[{"FileId":1,"ApplicantFirstName":"Paweł","ApplicantLastName":"Krakowiak","UploadDate":"\/Date(1235656448387
)\/"}]
Это хороший подход? Я обеспокоен List<object>
- это хуже, чем возвращаться, скажем, List<SomeDomainObject
>? Спектакль? Что-то еще?
Это .NET 2.0, я не могу использовать функции 3.5. По крайней мере анонимные типы работают ...