Mix*_*oid 3 c# type-conversion
我一直在寻找解决方案已经有一段时间了,并且找不到任何接近的东西.
我想要实现的目标:
我有两个字符串,'a'和'b'.字符串'a'包含数据类型,例如"Boolean".
字符串b包含类似"1"或"False"的值,可以是任何值.
我希望能够将字符串'b'的值存储在具有字符串'a'的数据类型的变量中.
如果我想通过一个结果列表来使用与示例中给出的值相同的结果,结果如下:
Foreach(var value in MyList)
{
if(!var ConvertTo a) //Result would be negative because for "1" for it is not a boolean value, however if 'a' is "Int32" the result would be true.
continue;
else
{//The value "False" is convertable to boolean, so the result would true
Create a variable with datatype boolean with the value 'false'.
}
}
Run Code Online (Sandbox Code Playgroud)
或多或少,我正在寻找一些扼杀黑客版本的TryParse().
我在我的例子中使用了boolean,但这可以是任何数据类型.至少我应该能够处理至少以下数据类型:
我的问题:
是否有可能以任何方式(尝试)将值转换为字符串中给出的任何数据类型?
我希望我的问题和例子很清楚,如果没有,请发表评论.
您必须将字符串映射到类型.由于并非所有这些都是System.<yourType>直接的,我会考虑创建一个映射:
Dictionary<string, Type> types = new Dictionary<string, Type>();
types.Add("int", typeof(System.Int32);
//etc.
Run Code Online (Sandbox Code Playgroud)
然后,使用Convert.ChangeType获取您的对象:
object myObj = Convert.ChangeType(b, types[a]);
Run Code Online (Sandbox Code Playgroud)
也许你可以通过尝试获取类型来扩展它,如果你的类型映射中不存在键:
object myObj = Convert.ChangeType(b, Type.GetType("System." + a));
Run Code Online (Sandbox Code Playgroud)