我是C#和Visual Studio的新手,所以我可能会遗漏一些基本的东西,但我找不到任何解决方案。
我获得了2个.NET项目,一个是可执行文件,它做了一些事情,但代码的主要部分是:
object tempInstance = Activator.CreateInstance(Type.GetTypeFromProgID(progID));
另一个项目只是创建一个.dll文件,我通过右键点击'参考文献'来添加到Visual Studio中的可执行文件中。并选择'添加参考...'然后浏览另一个项目创建的.dll文件。
但是,我在更改.dll文件中的progId时遇到问题。如果我把它留作" NETLoginDevice.DemoLoginDevice"有用。我也可以改变第一部分并获得" TestMan.DemoLoginDevice"上班。但是,我想将其更改为" TestMan.Receiver",但是当它尝试从该progId获取类型时,可执行代码返回null。有什么我需要改变才能让它发挥作用吗?我找不到任何其他对#34; DemoLoginDevice"的引用。在项目的任何地方,以及我定义的类的顶部看起来像:
[ComVisible(true)]
[ProgId("TestMan.Receiver")]
[Guid("6C163B59-CF0F-4C69-B8A6-8D3DBED2640E")]
public class Receiver: IAuthenticationNET, IAuthenticationNETLoginResult
似乎我应该能够将progID设置为" TestMan.Receiver"并且可执行代码应该可以工作,但我得到一个ArgumentNullException。
编辑:我仍然无法使用Type.GetTypeFromProgID(),但如果我这样做:
Type.getTypeFromCLSID(new Guid("6C163B59-CF0F-4C69-B8A6-8D3DBED2640E"));
我可以在调试器中看到它返回
{Name = "Receiver" FullName = "TestMan.Receiver"}
就像我一样:
Type.getFromProgId("TestMan.DemoLoginDevice");
我仍然不明白" DemoLoginDevice"来自和为什么" TestMan.Receiver"不起作用。我也试过改变Guid(如果事情被覆盖了),但是没有运气。