C# 从类型 FullName 创建一个类的实例

刺绣

有没有人知道在给定类型的 FullName(namespace.classname 格式)但没有 AssemblyQualifiedName 的情况下创建类实例的简单方法?该类型的 FullName 仅包含在一个在运行时被引用和可用的程序集中,因此没有歧义。

我没有类型,我有一个字符串——只有全名,没有装配部分。我不知道程序集,我只知道它被引用,并且只有一个程序集包含类型全名。

谢谢!

编辑:这与从专有协议反序列化实例有关。我收到了很好的答案,但是为了获得最佳解决方案而不是遍历所有程序集,我最终要做的是创建一个静态字典,其中包含 fullName 键和程序集限定名称作为值,因为我知道究竟是哪个类,它们是一个有限的集合。

约翰吴

加载所有程序集并选择它们的类型,然后过滤名称。

public static object CreateType(string typeName)
{
    var allTypes = AppDomain.CurrentDomain
        .GetAssemblies()
        .SelectMany
        (
            a => a.GetTypes()
        );
    var type = allTypes.Single( t => t.Name == typeName );

    return Activator.CreateInstance(type);
}

您可能会考虑添加一些验证代码来检查重复项,并确保存在默认构造函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何创建一个不是类型实例的类?

传递一个类类型作为参数,然后创建它的实例

Angular Property Decorator每个类类型仅创建一个属性实例

是否可以创建一个类,其每个实例将具有不同的类型?

c 创建一个没有 typedef 的新类型

创建一个C#Func <>类型别名

实例化一个抽象类类型的类

是否将在C#中为类的每个实例创建一个属性实例?

MongoDB C#创建一个函数,我可以将类型/类名作为参数传递给它

我可以创建一个可以采用任何枚举的模板(非类型)参数类吗?C++11

在C中使用typedef时,它将创建一个新类型还是仅创建一个类型名称?

mypy:创建一个接受子类实例列表的类型

C#从字符串创建一个类的实例

C#从另一个表单创建类的新实例

在c#中动态创建同一个类的多个对象实例

C#如何访问另一个类创建的List实例

JNI-创建另一个C ++类的实例

如果满足模板类型的条件,则C ++仅创建类的实例

C#:我是否总是实例化一个新的引用类型变量?

如何根据要实例化的类的变量类型来实例化一个类

如何创建一个C#类的实例,其实例的属性为set.private..from F#

与普通类型的变量数创建一个类

用可选的通用类型<T>创建一个类

C#如何在一个函数中创建类的实例,然后在另一个函数中使用相同的实例

Haskell:实例参数化类型一个单一类型

类型检查类(不是类的实例)扩展了另一个类

是否可以在c ++中创建一个占用少于一个字节内存的类型?

自动将类型类实例设为另一个实例

C ++生成一个类型为抽象类的对象