我正在使用 jQuery 从页面方法中检索 JSON 对象。我有一个使用 SubSonic 的 DAL,如果我返回从 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 的功能。至少匿名类型工作......