两个类C#中的引用对象

时间:2017-02-26 19:47:08

标签: c# .net class reference client

让我们直接谈谈我可能相当简单的问题。

我的LoginService文件夹中有一个Services类,它与服务器建立了连接。我有另一个UserModel,我想从服务器接收信息。为了不再次登录(这将是愚蠢的),我需要在具有相同值的两个文件中维护client引用。换句话说,我需要能够从不同的类访问相同的对象(进行另一个引用)。

我尝试过并尝试过,但我遗失了一些东西。 我发现仍然没有解决我的一个相当类似的帖子是this

我的LoginService中的代码:

namespace App_Name.Services
{
    class LoginService
    {
        public static Class_Name client;

        public async Task MakeConnectionAsync(string userToken)
        {
            client = new Class_Name();

            PasswordVault vault = new PasswordVault();

            await client.LoginAsync(TokenType.User, userToken);

            await client.StartAsync();
        }

所以现在我想在我的UserModel.cs上获取用户头像:

namespace App_Name.Models
{
    class UserModel
    {
        public string GetAvatar()
        {
            return LoginService.client.CurrentUser.GetAvatarUrl();
        }

但是它总是会产生异常,因为它尝试但没有连接。 我确信它是Connected,因为为了加载UserModel,它必须是一个成功的连接。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

当你直接调用client.CurrentUser.GetAvatarUrl()方法时,它不是由LoginService类决定的。您应该在使用之前创建Login类。您还在LoginService类上使用异步任务,您必须确认已经由UserModel类创建了用户。

对于最佳实践,您可以使用像这样的构造函数创建实例。

  static class LoginService
    {
        public static Class_Name client;
        static LoginService()
        {
        client = new Class_Name();
        }

如果您想使用静态(我不喜欢服务级别),请不要像使用此目的那样使用静态。 首先你应该检查依赖注入概念;我建议使用unity和structuremap容器。您可以通过类创建使用服务,而无需任何对象null ref。例外。耦合和空引用异常时依赖注入减少。

答案 1 :(得分:0)

嗯,对于任何可以使用它作为参考的人,我上面的代码都没问题。

问题在于连接API没有立即返回状态。延迟2秒解决了我的问题。感谢大家的帮助。