Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用反射创建位于不同项目中的类的对象?_C#_.net_C# 4.0_Reflection - Fatal编程技术网

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

C# 使用反射创建位于不同项目中的类的对象?,c#,.net,c#-4.0,reflection,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中创建类的对象时,类型将为空,即使我传递全名,如

我在C#有两个不同的项目。我正在编写代码,用于在第一个项目中使用反射创建类对象。现在我想创建第二个项目中的类的对象。我该怎么做呢。我使用的代码如下

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

当我在项目1中创建类的对象时,此代码起作用,但当我在项目2中创建类的对象时,类型将为空,即使我传递全名,如xxx.xx.classname。

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

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

可能是类名,但传递的内容可能不正确。。。首先创建一个测试方法,并按如下所示标识类名

string fullName=typeof(YourClass).FullName;

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

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

string fullName=typeof(YourClass).FullName;

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

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

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

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

我希望这会有所帮助。

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

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

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

我希望这会有所帮助。

您是否在第一个项目中添加了第二个项目的参考。我并不是真正的C#guy。但仍然如此。您是否在第一个项目的第二个项目中添加了任何参考(如果有)。我并不是真正的C#guy。但仍然如此。您检查第一个项目的第二个项目中是否要添加ref.(如果有)。抱歉,它不起作用,我已经在项目1中有了项目2的引用。您不能以正常方式使用构造函数而不是使用Activator.CreateInstance(type)等来创建对象吗?-(也可以检查dll是否是最新的,但它可能是最新的)没有boss,我必须通过将类名作为字符串传递来创建对象。该类是公共的吗?很抱歉,boss它不起作用,我已经在项目1中引用了项目2。您不能使用构造函数而不是Activator.CreateInstance(类型)来创建对象吗等等(也可以检查dll是否是最新的,但它可能是最新的)没有老板,我必须通过将类名作为字符串传递来创建对象。该类是公共的吗?