使用反射创建不同项目中的类对象?

时间:2013-01-30 12:16:33

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

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

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

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

3 个答案:

答案 0 :(得分:0)

您可能需要在第一个项目中引用第二个项目的.dll。 右键单击references文件夹,然后单击“添加引用...”,然后找到第二个项目的已编译dll并添加它。

答案 1 :(得分:0)

也许它并不完全是你想要的但是我通过在源项目中创建类型并将类型传递给另一个项目中的方法来解决我的问题。

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

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

我希望这会有所帮助。

答案 2 :(得分:-1)

可能是类名,无论你传递的是什么都可能不正确...首先创建一个测试方法并识别类名,如下所示。

string fullName=typeof(YourClass).FullName;

然后复制" fullName"的值然后在你的代码中使用。