我正在尝试将对象转换为我创建的类。 我可以使用以下代码轻松转换对象:
public class Foo
{
public Bar[] Bars;
}
object fooObject = assembly.CreateInstance(fooName);
Foo foo = (Foo)fooObject;
// Where assembly is System.Reflection.Assembly
// And I don't know why that I can't convert it directly like:
// Foo foo = (Foo)assembly.CreateInstance(fooName);
// @^ that code will always make all Bar in Foo.Bars disappear
所以我试图让它简短/更简单。 我想这样做:
Foo foo = Converter.Convert(assembly.CreateInstance(fooName));
但我怎么能这样做? 谢谢!
答案 0 :(得分:0)
如果您知道实际类型,那么只需:
SomeType typed = (SomeType)obj;
typed.MyFunction();
如果你不知道实际的类型,那么:不是真的,不是。你不得不使用以下之一:
•反射 •实施众所周知的界面 •动态 例如:
// reflection
obj.GetType().GetMethod("MyFunction").Invoke(obj, null);
// interface
IFoo foo = (IFoo)obj; // where SomeType : IFoo and IFoo declares MyFunction
foo.MyFunction();
// dynamic
dynamic d = obj;
d.MyFunction();