将c# DynamicObject强制转换为任意类型

本文关键字:任意 类型 转换 DynamicObject | 更新日期: 2023-09-27 18:14:23

我正在尝试用c#为基于约定的配置绑定器编写一个不错的消费者API。ConfigManager.GetSection(...)返回一个对象,所以我想返回一个动态对象,当转换为所需类型时调用映射器。

在c# 4+中是否有任何方法可以创建一个动态类,可以在对其应用显式强制转换时处理调用?

MyConfig config = (MyConfig)ConfigurationManager.GetSection("some/section");

在这种情况下,来自ConfigurationManager的动态对象将被强制转换调用以执行一些配置魔术(我已经解决了这一点)

将c# DynamicObject强制转换为任意类型

是的,DynamicObject有一个可覆盖的TryConvert。当DynamicObject子类被强制转换(或隐式转换为赋值)时,调用TryConvert,并且您可以在返回结果之前从binder参数获得有关调用的动态详细信息。

粘合剂。类型属性提供对象必须转换为的类型。为例如,c#中的语句(String)sampleObject(CType(sampleObject, Type) in Visual Basic),其中sampleObject是一个从DynamicObject类派生的类的实例,粘结剂。Type返回String类型。粘结剂。明确的产权提供有关发生的转换类型的信息。它显式转换返回true,隐式转换返回false转换。

有很多项目可以满足你的需求。

查看AutoConfig,例如