我的方案应该是简单的...我想要转换的类型FROM是ALWAYS "字符串".我想要转换为...可能是很多东西 - 整数,日期时间,...字符串等.
这很容易:
string valueToConvertFrom = "123";
int blah = Convert.ToInt32(valueToConvertFrom);
Run Code Online (Sandbox Code Playgroud)
但是......我不知道(直到运行时)我需要转换为的值是'Int'(或其他).我试过这个:
string valueToConvertFrom = "123";
Type convertToType = typeof(int);
object blah = Convert.ChangeType(valueToConvertFrom, convertToType);
Run Code Online (Sandbox Code Playgroud)
但这给了我以下错误:"对象必须实现IConvertible."
我不想做一个switch语句并根据类型名称调用"Convert.ToBlah"...任何建议?
从文档:
CTypeDynamic方法根据对象本身定义的转换语义应用动态转换.如果动态对象继承自DynamicObject,则CTypeDynamic方法首先尝试使用用户定义的静态转换来执行转换.如果用户定义的静态转换失败,CTypeDynamic方法将尝试使用动态转换执行转换.如果动态对象实现IDynamicMetaObjectProvider,则CTypeDynamic方法优先于用户定义的静态转换的动态转换.
C#中有什么东西可以做到这一点吗?或者我只需导入具有它的VB库.