建设工程质量安全管理协会网站,新手制作网站工具,网站建设与管理主要学什么,厦门网站设计一般要多久IParsable 是 .Net 7 中新增的接口#xff0c;它可以将字符串转换为对应的实体。在 Controller 的 Route 绑定中可以使用 IParsable 来绑定复杂的实体。实验背景 假设有一个需要将 route report/{month}-{day} 绑定到 MyDate 对象上的场景。在 .Net 7 之前#x…IParsable 是 .Net 7 中新增的接口它可以将字符串转换为对应的实体。在 Controller 的 Route 绑定中可以使用 IParsable 来绑定复杂的实体。实验背景 假设有一个需要将 route report/{month}-{day} 绑定到 MyDate 对象上的场景。在 .Net 7 之前通常是使用两个参数来接收绑定的 month 和 day然后在代码中实例化 MyDate 对象。例如[Route(report/{month}-{day})]
public ActionResult GetReport(int month, int day)
{var myDate new MyDate { Month month, Day day };// 使用 myDate
}使用 IParsable 在 .Net 7 中可以直接让 MyDate 实现 IParsable 接口然后在 route 中绑定 report/{myDate}。这样 MyDate 就能直接从 route 上绑定省去了手动实例化的步骤。下面是一个示例代码public class MyDate : IParsableMyDate
{public int Month { get; set; }public int Day { get; set; }public void Parse(string input){var parts input.Split(-);Month int.Parse(parts[0]);Day int.Parse(parts[1]);}public static MyDate Parse(string s, IFormatProvider? provider){var date new MyDate();date.Parse(s);return date;}public static bool TryParse(string? s, IFormatProvider? provider, out MyDate result){try{result Parse(s, provider);return true;}catch{result default;return false;}}
}[HttpGet(report/{myDate})]
public ActionResult GetReport(MyDate myDate)
{// myDate 已经被正确地绑定
}参考资料 IParsable[1]5 new MVC features in .NET 7[2]本文采用 Chat OpenAI 辅助注水浇筑而成如有雷同完全有可能。本文作者newbe36524本文链接https://www.newbe.pro/ChatAI/How-to-use-IParsable-in-route-binding/版权声明本博客所有文章除特别声明外均采用 BY-NC-SA 许可协议。转载请注明出处参考资料[1]IParsable: https://learn.microsoft.com/en-us/dotnet/api/system.iparsable-1?viewnet-7.0WT.mc_idDX-MVP-5003606[2]5 new MVC features in .NET 7: https://andrewlock.net/5-new-mvc-features-in-dotnet-7/