在运行时转换对象

时间:2011-10-02 10:31:41

标签: c# reflection

我想使用反射执行以下代码行。

IWshRuntimeLibrary.IWshShortcut desktopShortCut = (IWshRuntimeLibrary.IWshShortcut)WshShell.CreateShortcut(Environment.SpecialFolder.Desktop.ToString()+"\\Max Y+Y.lnk");

我已成功获得正确的表达部分。

WshShell.CreateShortcut(....)

使用

this.assembly = Assembly.LoadFrom(Environment.CurrentDirectory + "\\Interop.IWshRuntimeLibrary.dll");

            AppDomain.CurrentDomain.Load(assembly.GetName());

            this.WshShellClass = assembly.GetType("IWshRuntimeLibrary.WshShellClass");
object classInstance = Activator.CreateInstance(this.WshShellClass, null);



            object[] parameters = new object[1];
            parameters[0] = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Max Y+Y.lnk";
            MethodInfo methodInfo = this.WshShellClass.GetMethod("CreateShortcut");

            object result = methodInfo.Invoke(classInstance, parameters);

现在我想在上面的案例中将它转换为类型IWshRuntimeLibrary.IWshShortcut的对象并将其分配给。

IWshRuntimeLibrary.IWshShortcut desktopShortCut,

这怎么可能?

1 个答案:

答案 0 :(得分:0)

如果WshShellClass.CreateShortcut返回IWshRuntimeLibrary.IWshShortcut,那么您可以说

IWshRuntimeLibrary.IWshShortcut desktopShortCut = (IWshRuntimeLibrary.IWshShortcut) result

我错过了什么吗?