答案:匿名对象无法直接转换为强类型,但可通过反射、序列化或第三方库实现属性映射。使用反射可遍历属性并复制值,适用于通用场景;JSON序列化通过序列化再反序列化实现,代码简洁但需类型兼容;高性能需求可选AutoMapper或表达式树缓存优化性能。

在 .NET 中,匿名对象本身是编译时生成的内部类,无法直接通过类型转换赋值给自定义的强类型对象。但可以通过反射、序列化或辅助方法实现属性级别的映射。
通过反射读取匿名对象的属性,并将其值设置到目标强类型实例中:
public static T ToStrongType
{
var result = new T();
var sourceProps = anonymousObject.GetType().GetProperties();
var targetProps = typeof(T).GetProperties();
foreach (var sourceProp in sourceProps)
{
var targetProp = targetProps.FirstOrDefault(p => p.Name == sourceProp.Name && p.PropertyType == sourceProp.PropertyType);
if (targetProp != null && targetProp.CanWrite)
{
targetProp.SetValue(result, sourceProp.GetValue(anonymousObject));
}
}
return result;
}
VALL-E
VALL-E是一种用于文本到语音生成 (TTS) 的语言建模方法
134
查看详情
示例用法:
var anon = new { Name = "Alice", Age = 30 };
var person = ToStrongType
借助 System.Text.Json 或 Newtonsoft.Json 将匿名对象序列化再反序列化为目标类型:
// 使用 System.Text.Json
using System.Text.Json;
public static T ToStrongTypeJson
{
var json = JsonSerializer.Serialize(anonymousObject);
return JsonSeriali
zer.Deserialize
}
注意:该方式要求属性名称和类型兼容,且目标类型有公共无参构造函数。
如果频繁转换,反射性能较低。可考虑:
直接强制类型转换(如 (Person)anon)会编译失败或抛异常,因为匿名类型是密封的且不可见。
基本上就这些方法,JSON 反序列化最简洁,反射最通用,高性能场景建议用缓存映射。
以上就是.NET怎么将一个匿名对象转换为强类型对象的详细内容,更多请关注php中文网其它相关文章!
相关文章:
Lar*el 递归关系中排除指定分支的教程
uc浏览器网页版入口 uc浏览器网页版最新网址
抖音怎么赚钱_抖音创作者变现方法与途径指南
c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架
win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】
解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常
c++ dfs和bfs代码 c++深度广度优先搜索算法
魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】
PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误
在J*a中如何开发简易仓库管理与库存统计_仓库管理库存统计项目实战解析
qq游戏手机版下载安装_qq游戏移动端入口
J*aScript中安全有效地处理localStorage字符串数据
58动漫网在线官方网 58动漫网正版动漫入口网址
CSS布局中意外空白:解决padding-top导致的顶部间距问题
微信网页版官方快速登录入口 微信网页版网页版账号直达
解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南
excel如何生成目录 excel一键生成工作表目录超链接
qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决
Python自定义类排序:解决lambda键值访问TypeError的实践指南
QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台
word邮件合并后日期格式不对怎么改_Word邮件合并日期格式修改方法
新手怎么开始学化妆 零基础化妆入门教程
如何在 Windows 11 中启动游戏手柄设置
俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问
EMS快递官网app_中国邮政速递物流手机客户端
Go语言HTML解析:利用Goquery精准获取指定元素内容
零跑汽车11月交付量达70327台 实现连续9个月正增长
如何使用J*aScript精确选择并批量修改特定父元素下子链接的样式
如何将一个大型PHP应用拆分为多个Composer包_微服务与模块化架构的Composer实践
《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情
深入理解Google Cloud Datastore查询:祖先路径与数据一致性
HTML空白字符处理机制:渲染、DOM与编码实践
Composer如何在生产环境安全地执行composer update
实现全屏滚动与导航点:专业教程
深入理解rpy2中的类型转换:优化Python对象到R矩阵的映射
谷歌浏览器如何快速清除某个网站的数据_Chrome网站缓存清理方法
Python中如何避免重复条件判断:利用数据结构实现动态逻辑
Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量
Eclipse怎么运行工程_Eclipse工程运行配置说明
虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画
C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言
qq游戏跨平台入口_qq游戏多设备同步登录
在J*a中如何使用Exception包装底层异常_异常包装与信息传递方法说明
学习通在线学习平台 学习通网页版直接进入课程中心
包子漫画官方网站在线链接-包子漫画在线阅读平台主页地址
Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐
如何在Promise链中优雅地中断后续then执行
必由学官网入口 必由学教师登录入口
电脑IP地址怎么查 查看本机IP地址的几种方法
抖音网页版企业服务中心登录入口_抖音网页版企业登录平台