【发布时间】:2011-04-20 07:59:42
【问题描述】:
给定班级:
public class Foo
{
public string Name { get; set; }
}
是否可以通过 Convert.ChangeType 从字符串创建 Foo 实例:
Type type = typeof(Foo);
object value = "one";
value = System.Convert.ChangeType(value, type);
这就是第 3 方 API 尝试重建对象的方式。有人提到这可以通过隐式运算符实现,但据我了解,这将让我执行以下操作,而不是创建对象:
Foo foo = new Foo() { Name = "one" };
string fooAsString = foo; // implicit conversion -- no cast needed
有没有办法以这种方式创建对象?此外,如果有其他方法,我确实可以更改 Convert.ChangeType。
更新: 我问的原因是因为它抛出异常:
从 'System.String' 到的无效转换 'JibbaJabba+Foo'。
添加运算符并没有解决问题。
【问题讨论】:
-
我应该注意我尝试了隐式运算符但它不起作用。
-
请注意,您可以在任一方向使用隐式运算符,但它仍然是 C# 编译器功能,不会被已编译的代码使用。很可能您必须查看 3rd 方库是否允许您自己创建对象,也许存在接受
Converter<string, T>委托的重载?
标签: c# type-conversion