c# - 自定义 ASP.NET ControllerBase 的序列化行为
问题描述
我正在构建一个 REST 服务,它提供来自我的数据库或模拟位置的数据。
[Route("[controller]")]
public class ProjectController : ControllerBase
我有一个接口,它定义了我在客户端中实际需要的属性。
public interface IProject : IProduction
{
string Title { get; set; }
}
以及接口的两个实现,一个精简的模拟对象:
public class MockProject : ProductionBase, IProject
{
public string Title { get; set; }
}
还有一个奇特的,它包含我们不都希望将数据泄露给公共接口的数据。
public class DBProject : ProductionDBBase, IDBReadable, IProject
{
public string ExternalProjectTitle { get; set; }
public DateTime ModifyDate { get; set; }
public string RootDirectory { get; set; }
public string Title { get; set; }
}
所以在我的控制器中,我有一个 GET 函数,
[HttpGet]
public ActionResult<IEnumerable<IProject>> GetProjects()
{
Enumerable<IProject> projects = ...
return projects;
}
但它正在序列化 DBProject 的所有属性,而不仅仅是 IProject 的属性。我可以在不在 MockProject 中创建复制构造函数并在序列化之前转换所有对象的情况下更改此行为吗?或者装饰我不想用属性序列化的每个属性?
解决方案
推荐阅读
- oracle - 在 VBScript 中从 PL/SQL 执行的命令中获取值
- lua - 我正在尝试对表值进行算术运算
- r - 加权值时计算百分比
- javascript - 未选择强制单选按钮时缺少引导弹出窗口
- regex - bash 文件中的可选字符查找正则表达式
- openmdao - Right procedure for contributing or suggesting feature/improvements
- .htaccess - How to check URL to contain special characters on .htaccess
- java - 如何使用 maven 解决 Heroku 上的 NoClassDefFoundError?
- sql - 用两个 SQL 结果计算
- ubuntu - 硬盘驱动器上的 Dropbox ext4