私の「ビュー」コード ビハインドは、通常、ビュー モデルがコンストラクターに挿入された状態で、次のようになります。
public partial class CustomerView : UserControl
{
public CustomerView(CustomerViewModel viewModel)
{
InitializeComponent();
DataContext = viewModel;
}
}
ビューモデルは次のようになり、依存関係がコンストラクターに注入されます。
public class CustomerViewModel
{
...
public CustomerViewModel(SomeDependency someDependency)
{
// etc...
この例では、3 つのクラス (view、view-model、および SomeDependency) はすべて同じアセンブリに存在します。誰かがアセンブリを取得してインスタンス化を開始したくないため、理想的にはすべて内部にある必要があります。internal
問題は、部分クラスであるためビューを作成できないことです。また、パブリックのままにすると、内部型をパブリック クラスのコンストラクターに渡すことができないため、コンパイルされません。
これを回避するために、代わりにコンストラクターを内部にしようとしました。これはコンパイルされましたが、Castle Windsor は内部コンストラクターに型を登録できないため、実行時例外をスローします! だから私はこれらの行き止まりにぶつかり続けているようです - 解決策はありますか、私のクラス設計は間違っていますか、それともすべてを内部にすることについて不必要に心配していますか?