我正在使用TaskBar
在命名空间中定义的方法Microsoft.WindowsAPICodePack.Taskbar
。具体来说,我将专注于SetProgressState
这个问题。
这是我在询问 的定义时得到的元定义SetProgressState
:
namespace Microsoft.WindowsAPICodePack.Taskbar
{
public class TaskbarManager
{
public void SetProgressState(TaskbarProgressBarState state);
public void SetProgressState(TaskbarProgressBarState state, IntPtr windowHandle);
public void SetProgressState(TaskbarProgressBarState state, System.Windows.Window window);
}
}
显然,我省略了该类的大部分定义,只是为了突出一个方法的重载。
到目前为止,我一直在使用单参数重载并且没有遇到任何问题。但是,今天我尝试使用接受 anIntPtr
作为其第二个参数的双参数重载。
当我这样做时,我在构建期间开始收到此错误:
“System.Windows.Window”类型是在未引用的程序集中定义的。您必须添加对程序集 'PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 的引用
所以我的问题是为什么我在使用单参数重载时没有收到错误,但在引用其他参数时我确实收到了错误(以及错误的)?
编辑(添加子问题):
我还尝试了以下方法,但没有任何区别:
SetProgressState(myState, (IntPtr) myWindowHandle);
我认为通过显式转换,我可以避免编译器在实现适当的重载时混淆,但事实并非如此。