C# 调用不明确。WithParentActivityOrWindow(Func<;IWin32Window>;)和(Func<;IntPtr>;)

C# 调用不明确。WithParentActivityOrWindow(Func<;IWin32Window>;)和(Func<;IntPtr>;),c#,msbuild,C#,Msbuild,请帮我理解为什么会这样 调用在以下方法或属性之间不明确:“PublicClientApplicationBuilder.WithParentActivityOrWindow(Func)”和“PublicClientApplicationBuilder.WithParentActivityOrWindow(Func)”之间 我正在使用microsoft.identity.client程序集中的PublicClientApplicationBuilder.WithParentActivityOrWi

请帮我理解为什么会这样

调用在以下方法或属性之间不明确:“PublicClientApplicationBuilder.WithParentActivityOrWindow(Func)”和“PublicClientApplicationBuilder.WithParentActivityOrWindow(Func)”之间

我正在使用
microsoft.identity.client
程序集中的
PublicClientApplicationBuilder.WithParentActivityOrWindow(Func)
方法

实际上有三种方法

WithParentActivityOrWindow(Func<object> parentActivityOrWindowFunc);
WithParentActivityOrWindow(Func<IWin32Window> windowFunc);
WithParentActivityOrWindow(Func<IntPtr> windowFunc);
对我来说也一样

请帮我了解一下有什么区别

UPD

UPD2 看起来
()=>GetHandle()
实际上是Func声明。编译器可以选择合适的方法,因为返回类型是参数的泛型Func类型的一部分

然而,
GetHandle
只是一种方法。在选择使用哪个重载方法时,C#(和C一样)会忽略方法的返回类型(在7.3版本之前C#一直忽略)

如果
GetHandle
(和
WithParentActivityOrWindow
parameter)具有重载变量和附加参数,如
Func

static void WithParentActivityOrWindow(Func windowFunc){
带ParentActivityOrWindow(Func windowFunc){}的静态无效
静态IntPtr GetHandle(int){}
WithParentActivityOrWindow(GetHandle);

您的目标是.NET的哪个版本?@EtienDemartel感谢您提出的问题,目标是.NET Framework 4.8这在更高版本中有效,因为。这是由C#6引入的,因此如果您更改项目以C#6或更高版本为目标,它应该在VS2017中起作用。VS2017上的NET 4.8默认情况下以C#7为目标,因此它应该起作用,因此必须进行其他操作。如果7.3修复了它,那么可能这就是原因:
WithParentActivityOrWindow(() => GetHandle());