如何创建转换器类型函数

本文关键字:转换器 类型 函数 创建 何创建 | 更新日期: 2023-09-27 18:11:28

我正试图将对象转换为我所做的类。我可以用下面的代码轻松地转换对象:

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

但是我怎么能做到呢?谢谢!

如何创建转换器类型函数

如果您知道实际类型,则只需:

SomeType typed = (SomeType)obj;
typed.MyFunction();

如果你不知道实际的类型,那么:not really, no。您必须使用以下方式之一:

•反射•实现一个众所周知的接口•动态例如:

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