MVVM和Castle Windsor - 类可见性问题

时间:2013-07-10 13:37:17

标签: mvvm castle-windsor

我的“视图”代码隐藏通常看起来像这样,视图模型被注入到它的构造函数中: -

public partial class CustomerView : UserControl
{
    public CustomerView(CustomerViewModel viewModel)
    {
            InitializeComponent();
            DataContext = viewModel;
    }
}

视图模型看起来像这样,任何依赖项都被注入到它的构造函数中: -

public class CustomerViewModel
{
    ...
    public CustomerViewModel(SomeDependency someDependency)
    {
        // etc...

在这个例子中,所有三个类(视图,视图模型和SomeDependency)都驻留在同一个程序集中,理想情况下应该都是内部的,因为我不希望有人抓住程序集并开始实例化事物。麻烦的是,我无法制作视图internal,因为它是一个部分类。如果我公开它,它将无法编译,因为你不能将内部类型传递给公共类的构造函数。

为了解决这个问题,我尝试将构造函数改为内部。这个已编译,但Castle Windsor会抛出运行时异常,因为无法使用内部构造函数注册类型!所以我似乎一直在追求这些死胡同 - 是否有任何解决方案,我的班级设计是错误的,还是我不必要地担心内部的一切?

1 个答案:

答案 0 :(得分:0)

为了记录,似乎我过于担心试图隐藏"类和方法,即使这只是一个exe而不是某种类型的库供客户使用。根据此处和其他地方的评论,我决定不尝试改变可见性。