为什么我得到这个奇怪的'您必须添加对程序集的引用'错误?

时间:2014-02-24 14:39:54

标签: c# wpf mvvm constructor reference

这对你们所有人来说都是一个非常简单的问题。到目前为止,我有一个带有构造函数的视图模型类:

public DigitalServiceProviderPriceViewModel(Release relatedRelease)
{
    this.relatedRelease = relatedRelease;
    InitialiseViewModel(new TracksModel(StateManager.CurrentUser));
    InitialiseDigitalServiceProviderPrice();
}

这是在ViewModels dll中,并从UserControl类后面的代码中调用:

DigitalServiceProviderPriceViewModel digitalServiceProviderPriceViewModel = 
    new DigitalServiceProviderPriceViewModel(viewModel.Release);

这一切都很好,但我需要在构造函数中添加另一个输入参数,所以我这样做了:

public DigitalServiceProviderPriceViewModel(Release relatedRelease, 
    DspProductTypes dspProductType)
{
    this.relatedRelease = relatedRelease;
    DspProductType = dspProductType;
    InitialiseViewModel(new TracksModel(StateManager.CurrentUser));
    InitialiseDigitalServiceProviderPrice();
}

然后这样称呼它:

DigitalServiceProviderPriceViewModel digitalServiceProviderPriceViewModel = new 
    DigitalServiceProviderPriceViewModel(viewModel.Release, DspProductTypes.None);

但是,执行此操作后,我收到此错误:

  

错误3“Midas.Models.Interfaces.ITracksModel”类型在未引用的程序集中定义。您必须添加对程序集'Midas.Models,Version = 3.1.5168.25362,Culture = neutral,PublicKeyToken = fd8cb4d036a0621f'的引用。 C:\ DevelopmentProjects \ Midas \ Midas.Views \ ReleaseView.xaml.cs 49 13 Midas.Views

ITracksModel实例是InitialiseViewModel方法的输入参数...您可以在原始示例中看到正在传递的TracksModel对象。但是,在使用前面的构造函数时,我不需要引用Models dll,所以我进行了实验......即使我将新的构造函数更改为此,我仍然会得到相同的错误:

public DigitalServiceProviderPriceViewModel(Release relatedRelease, int number)
{
    // Just plain int input parameter and no content in constructor
}

...

DigitalServiceProviderPriceViewModel digitalServiceProviderPriceViewModel = new 
    DigitalServiceProviderPriceViewModel(viewModel.Release, 0);

显然,我无法在Models dll中添加Views dll的引用,因为 ViewModels dll已经存在一个引用Models dll。此外,我应该必须,因为程序已经构建并且每次都成功运行,直到此时为止。

那么,任何人都可以解释这个问题吗? 为什么在向构造函数添加一个新输入参数时会出现错误?最后,我该如何摆脱这个错误?


更新>>>

我只是认为我会提到通过完全避免它并且不使用构造函数传递这些值来解决这个问题很容易,但是我试图找出这里发生了什么,而不是试图找到解决办法。

0 个答案:

没有答案