从位于不同名称空间的不同类访问变量

时间:2019-01-25 13:36:13

标签: c# mvvm internals

我有一个MVVM应用程序,我需要在某个地方声明一个变量并从我程序集中的任何地方(即,从不同名称空间中的不同类访问)访问它。我试图在主类中声明一个内部变量,但是它不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

听起来像您想要一个简单的“服务”

namespace en.my.services
{
     public class VariableService
     {
         public string SomeVariable {get; set;}
     }
}

您可以在需要的地方注射:

using en.my.services; // Make Service namespace known

namespace en.my.clients 
{
    public class MyServiceClient
    {
        VariableService svc = null;

        public MyServiceClient ( VariableService varsserv ) // <- Parameter-Injection via 
                                                            // your DI Framework
        {   
            svc = varserv;
        }

        public void SomeMethod()
        {
            svc.SomeVariable = "Update";
        }
    }
}

我建议也使用一个界面。因此,您可以通过模拟接口轻松地进行(单元测试)。因此,您需要IVariableServiceVariableService来实现它。客户端将使用该接口,而您的DI Framework配置将建立从该接口到该实现的单例实例的连接。