gpt4 book ai didi

c# - 目标调用异常?

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:50 24 4
gpt4 key购买 nike

为什么以下代码行会导致 TargetInvocationException 异常?

    private Dispatcher dispatcher = null;

public DownloadManager(Dispatcher dispatcher = null)
{
this.dispatcher = dispatcher ?? Dispatcher.CurrentDispatcher;
}

DownloadManager 在 XAML 中实例化时,如下所示:

<Window.DataContext>
<c:DownloadManager />
</Window.DataContext>

请注意,调试器不会特别突出显示这些行中的任何一行;我所知道的是,如果我删除它们,我的程序不会崩溃。

最佳答案

要通过 XAML 实例化一个对象,它需要有一个公共(public)的默认构造函数。具有默认值的参数化构造函数与默认构造函数不同。因此,XAML 解析器在尝试实例化您的对象时会死掉。我会说带有 NullReferenceException 的 TargetInvocationException,因为内部有点毫无值(value),可以将更有用的东西作为内部抛出。

最后,FWIW,VS2010 中的 XAML 编辑器告诉我,当我有一个像你这样定义的构造函数时,如果没有默认构造函数,我的类型将无法使用。

改为使用两个构造函数(或仅使用默认构造函数):

public MyViewModel()
: this( null ) {
}

public MyViewModel( Dispatcher dispatcher = null ) {
this._dispatcher = dispatcher ?? Dispatcher.CurrentDispatcher;
}

关于c# - 目标调用异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2792867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com