我实际上在blazor中重写了Silverlight应用程序,但是在我的应用程序中重用Silverlight应用程序中的ViewModels时遇到了一些问题。
现有的ViewModel使用大量静态访问作为类似于会话的系统存储库。在blazor的客户端版本中,通常不会有问题,但是在服务器端,这显然是一个大问题,所有共享相同存储库的客户端都不行。
就目前而言,我仅在服务器端进行开发,我需要进行调试才能正确进行开发。对于目标服务器,我们实际上不知道我们将使用客户端版本还是服务器版本,但是我们希望保留同时使用两者的可能性。
重构现有的ViewModels是一项复杂的任务,因为现有的应用程序依赖于它们,这将是巨大而复杂的重构,包括对实际应用程序的潜在回归。如果需要,我可以重写静态类的入口点,但是我无法真正替换所有地方对静态类的调用。
所以问题是,有什么方法可以管理静态类以“检索”例如会话范围的服务
1-像这样的东西
//this is the existing repository class, i can rewrite it, but calls like Locator.UiParameter need stay valid
public static class Locator
{
public static UiParameterViewModel UiParameter
{
get
{
UiParameterService myScopedService = ?????;
return myScopedService.UiParameter;
}
}
}
2-如果不能,单例系统可能吗? (并且我用Locator.Instance替换了对Locator的所有调用?例如
感谢您的帮助!
朱利安·古登