借助 Clay 编写 不可思议 的 c# 代码
不过借助 CodePlex 上的一个开源项目 Clay我们可以写出以下不可思议的代码var directory New.Array( New.Person( FirstName: Louis, LastName: Dejardin, Aliases: new[] { Lou } ), New.Person( FirstName: Bertrand, LastName: Le Roy ).Aliases(bleroy, boudin), New.Person( FirstName: Renaud, LastName: Paquay ).Aliases(Your Scruminess, Chef) ).Name(Some Orchard folks);Clay 项目将在本文后面提到我们先来看看是代码是如何的不可思议。不可思议的对象初始化新建 c# 项目引用 Clay 项目或其 dll, 并加入下面一行代码建议看完本文再自行尝试dynamic New new ClayFactory();先看下面的简单代码var person New.Person(); person.FirstName Louis; person.LastName Dejardin;不足为奇使用 .Net 4 中的 ExpandoObject 也能做到。下面的代码就有点意思了var person New.Person(); person[FirstName] Louis; person[LastName] Dejardin;这段代码和上面的效果是一样的它使用索引器的方式为 person 的属性赋值是不是有点类似 JavaScript再来看 jQuery 风格的代码var person New.Person() .FirstName(Louis) .LastName(Dejardin);还可以使用匿名类型方式var person New.Person(new { FirstName Louis, LastName Dejardin });甚至还可以使用命名参数方式var person New.Person( FirstName: Louis, LastName: Dejardin );不可思议吧综上所述我们有多种方式始化实体设置属性值以下方式都是等同的person.FirstName person[FirstName] person.FirstName()不可思议的 Array我们可以创建 JavaScript 风格的 Array:var people New.Array( New.Person().FirstName(Louis).LastName(Dejardin), New.Person().FirstName(Bertrand).LastName(Le Roy) );可如下操作这个集合int count people.Count; string firstName people[0].FirstName;我们还可以给实例动态增加 array 属性person.Aliases(bleroy, BoudinFatal);或者person.Aliases(new[] {Lou});还能向集合中增加新的元素person.Aliases.Add(loudej);到这里写出文首给出的 c# 代码应该不成问题了。不可思议的动态接口实现“动态接口实现”这个标题可能不太恰当还是通过代码来说明问题吧。假定我们有如下接口public interface IPerson { string FirstName { get; set; } string LastName { get; set; } }可以如下使用dynamic New new ClayFactory(); var people New.Array( New.Person().FirstName(Louis).LastName(Dejardin), New.Person().FirstName(Bertrand).LastName(Le Roy) ); IPerson lou people[0]; var fullName lou.FirstName lou.LastName;people[0] 只不过是我们通过 New.Person() 创建的一个动态对象并没有实现 IPerson 接口啊可就是能编译并运行通过神奇吧还不抓紧试试Clay 项目Clay 是 CodePlex 上的一个开源项目帮助我们创建轻松创建对象就 JavaScript 或其它动态语言一样简单。Clay 项目的网址是 http://clay.codeplex.com目前没有发布好的下载但我们可以直接下载它的源码

相关新闻

在Ubuntu系统上为Android交叉编译OpenSSL

在Ubuntu系统上为Android交叉编译OpenSSL

在Ubuntu系统上为Android交叉编译OpenSSL(以OpenSSL 3.5.7为例)需要配置好Android NDK环境,并使用OpenSSL自带的配置脚本进行编译。 选取OpenSSL版本,可以在官网查看:https://openssl-library.org/source/&#xff0c…

2026/7/5 3:36:35阅读更多 →
商品条码查询API实战:免费接口申请到代码集成全攻略

商品条码查询API实战:免费接口申请到代码集成全攻略

一、为什么需要商品条码查询API? 商品条码(如EAN-13、UPC-A)是商品流通的“身份证”,通过扫描条码即可获取商品名称、品牌、规格、价格等信息。对于电商平台、库存管理系统、零售POS机等场景,集成条码查询API能大幅提升…

2026/7/5 3:31:35阅读更多 →
magnetW:一款高效的跨平台磁力链接聚合搜索工具完全指南

magnetW:一款高效的跨平台磁力链接聚合搜索工具完全指南

magnetW:一款高效的跨平台磁力链接聚合搜索工具完全指南 【免费下载链接】magnetW [已失效,不再维护] 项目地址: https://gitcode.com/gh_mirrors/ma/magnetW 你是否曾经为了寻找一个资源而在多个磁力链接网站之间来回切换?是否希望有…

2026/7/5 3:31:35阅读更多 →
LitCAD:15分钟从零基础到二维CAD绘图高手

LitCAD:15分钟从零基础到二维CAD绘图高手

LitCAD:15分钟从零基础到二维CAD绘图高手 【免费下载链接】LitCAD A very simple CAD developed by C#. 项目地址: https://gitcode.com/gh_mirrors/li/LitCAD 想要掌握专业级的CAD绘图技能,却担心软件复杂、学习曲线陡峭?LitCAD正是为…

2026/7/5 4:51:39阅读更多 →
LangGraph快速入门与底层原理剖析

LangGraph快速入门与底层原理剖析

LangGraph 以图的方式构建语言代理 官方文档地址:https://langchain-ai.github.io/langgraph/ LangGraph 是一个用于构建具有 LLMs 的有状态、多角色应用程序的库,用于创建代理和多代理工作流。与其他 LLM 框架相比,它提供了以下核心优势&…

2026/7/5 4:51:39阅读更多 →
如何在Apple Silicon Mac上轻松运行Windows应用:Whisky终极指南

如何在Apple Silicon Mac上轻松运行Windows应用:Whisky终极指南

如何在Apple Silicon Mac上轻松运行Windows应用:Whisky终极指南 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 想在Apple Silicon Mac上无缝运行Windows软件和游戏吗&am…

2026/7/5 4:51:39阅读更多 →
终极NBT编辑指南:3分钟掌握Minecraft数据修改秘籍

终极NBT编辑指南:3分钟掌握Minecraft数据修改秘籍

终极NBT编辑指南:3分钟掌握Minecraft数据修改秘籍 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾因《我的世界》游戏存档损坏而束手无策&…

2026/7/5 4:51:39阅读更多 →
3分钟掌握PyInstaller打包文件提取:新手终极指南 [特殊字符]

3分钟掌握PyInstaller打包文件提取:新手终极指南 [特殊字符]

3分钟掌握PyInstaller打包文件提取:新手终极指南 🚀 【免费下载链接】pyinstxtractor PyInstaller Extractor 项目地址: https://gitcode.com/gh_mirrors/py/pyinstxtractor 你是否曾面对一个PyInstaller打包的EXE文件,却无法查看其中…

2026/7/5 4:51:39阅读更多 →
图像频域滤波实战:3步实现基于2D-FFT的高斯低通与高通滤波

图像频域滤波实战:3步实现基于2D-FFT的高斯低通与高通滤波

图像频域滤波实战:3步实现基于2D-FFT的高斯低通与高通滤波 1. 频域滤波的核心原理 当你第一次看到图像的频域表示时,可能会觉得那些对称的亮斑和条纹像某种抽象艺术。但正是这些看似神秘的图案,蕴含着图像处理的强大力量。频域滤波的核心思想…

2026/7/5 4:46:38阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/5 1:30:27阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/5 3:48:10阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/5 3:48:09阅读更多 →