我得到一个当前需要这样注册的课程(无反射工作)
ViewLocator = new StrongViewLocator()
.Register<MainWindowViewModel>(new ViewDefinition(typeof(MainWindow), () => new MainWindow()))
.Register<AddTextDialogViewModel>(new ViewDefinition(typeof(AddTextDialog), () => new AddTextDialog()));
我想使用这种更简单的语法生成与上述代码等效的代码。
ViewLocator = new StrongViewLocator()
.Register<MainWindowViewModel, MainWindow>()
.Register<AddTextDialogViewModel, AddTextDialog>();
如何使用 Source Generator 实现这一目标?
我相信扩展方法就足够了。
像这样的东西:
public static StrongViewLocator Register<TViewModel, TWindow>(this StrongViewLocator viewLocator)
where TWindow : new()
{
// .Register<MainWindowViewModel>(new ViewDefinition(typeof(MainWindow), () => new MainWindow()))
// .Register<MainWindowViewModel, MainWindow>()
return viewLocator.Register<TViewModel>(new ViewDefinition(typeof(TWindow), () => new TWindow()))
}