3

有可能做这样的事情吗?

  1. 创建一个类并将其放入程序集中,例如

    namespace some
    {
        public class foo{
            ..etc
    }
    
  2. 加载到当前appdomain

    Assembly.LoadFrom("some.foo.dll");
    
  3. 取出类型

    Type t = Type.GetType("some.foo");
    

基本上无论如何都可以将实际类型转换为 t 吗?

4

3 回答 3

1

我不确定我是否理解这个问题。我想你想实例化类型。

这将调用公共默认构造函数:

// specify the full name and assembly name, to make sure that you get the some.foo
// from the assembly in question.
Type t = Type.GetType("some.foo, some.foo");
object instance = Activator.CreateInstance(t);

查看重载以调用其他构造函数。

于 2012-09-04T08:43:58.503 回答
1

您可以使用反射来实例化对象。例如,使用默认构造函数进行实例化:

Type.GetType("Foo").GetConstructor().Invoke();

要使用带有字符串的构造函数进行实例化,请使用:

Type.GetType("Foo").GetConstructor(new[] { typeof(string) }).Invoke(new [] { "bar" });
于 2012-09-04T08:45:58.893 回答
0
var assembly = Assembly.LoadFrom("SomeAssembly.dll");
assembly.GetType("SomeType");
于 2015-02-27T02:56:54.813 回答