如何创建转换器类型功能

时间:2014-07-04 05:40:57

标签: c# .net-2.0

我正在尝试将对象转换为我创建的类。 我可以使用以下代码轻松转换对象:

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));

但我怎么能这样做? 谢谢!

1 个答案:

答案 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();