asp.net核心3中的体系结构问题-使用静态调用处理现有代码

时间:2019-07-16 06:25:59

标签: asp.net-core blazor

我实际上在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的所有调用?例如

感谢您的帮助!

朱利安·古登

0 个答案:

没有答案