【问题标题】:create object of class which is in different project using reflection?使用反射创建不同项目中的类对象?
【发布时间】:2013-01-30 12:16:33
【问题描述】:

我在 C# 中有 2 个不同的项目。我正在编写代码以在第一个项目中使用反射创建类对象。现在我想创建第二个项目中的类对象。我怎样才能做到这一点。我正在使用如下代码

Type type = Type.GetType("qualified class name");
var obj = Activator.CreateInstance(type);
Type objType = obj.GetType();

当我在项目 1 中创建类的对象时,此代码正在工作,但是当我在项目 2 中创建类的对象时,type 将变为 null,即使我正在传递全名如 xxx.xx.classname。

【问题讨论】:

  • 您是否添加了任何参考。在第一个项目中的第二个项目。我不是真正的 C# 人。但仍然。您检查要在第二个项目中为第一个项目添加的参考(如果有)

标签: c# .net c#-4.0 reflection


【解决方案1】:

您可能需要首先引用第二个项目的 .dll。 右击references文件夹,点击'Add Reference...',然后找到第二个工程编译好的dll并添加。

【讨论】:

  • 对不起老板,它不起作用,我已经在项目 1 中参考了项目 2。
  • 不能用普通的构造函数来创建对象,而不是使用 Activator.CreateInstance(type) 等吗? - (也可以检查 dll 是否是最新的,但可能是)
  • 没有老板,我必须通过将类名作为字符串传递来创建对象。
  • 课程是公开的吗?
【解决方案2】:

也许这不是您正在寻找的,但我通过在源项目中创建类型并将类型传递给另一个项目中的方法解决了我的问题。

    SomeObject.MethodInTargetProject(Type.GetType(FullTypeName));

    public void MethodInTargetProject(Type formType)
    {
        if (newFormType == null)
            return;
        var obj = Activator.CreateInstance(newFormType);
        ...
    }

我希望这会有所帮助。

【讨论】:

    【解决方案3】:

    可能是你传递的类名可能不正确...首先创建一个测试方法并如下标识类名。

    string fullName=typeof(YourClass).FullName;
    

    然后复制“fullName”的值,然后在您的代码中使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-14
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 2017-03-29
      • 2022-11-01
      • 1970-01-01
      相关资源
      最近更新 更多