Приведение объекта во время выполнения - PullRequest
0 голосов
/ 02 октября 2011

Я хочу выполнить следующую строку кода, используя отражение.

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 голосов
/ 02 октября 2011

Если WshShellClass.CreateShortcut возвращает IWshRuntimeLibrary.IWshShortcut, вы можете просто сказать

IWshRuntimeLibrary.IWshShortcut desktopShortCut = (IWshRuntimeLibrary.IWshShortcut) result

Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...