Xamarin 可以通过 class 名称创建对象实例吗?

Can Xamarin create an object instance by class name?

在 Xamarin Android 中,是否可以从 class 名称创建对象实例?

例如,如果我的 class 是 Foo,我想这样做:

ObjectHandle handle = (Foo)System.Activator.CreateInstance(null, "Foo");
Foo foo = (Foo)handle.Unwrap();
foo.PartyOn();

class Foo 在同一个项目(主应用程序)中,这就是我将 null 传递给 CreateInstance 的原因。

此代码产生 TypeLoadException:“无法加载类型 'Foo'。

您需要为 Foo 限定命名空间:

namespace MyApp
{
    public class Foo
    {
        public void PartyOn()
        {
            Console.WriteLine ("Party party!");
        }
    }

    // ...

    var handle = Activator.CreateInstance(null, "MyApp.Foo");
    Foo foo = (Foo)handle.Unwrap ();
    foo.PartyOn();
}