【问题标题】:Set Method isn't working... it doesn't give the value to the variable设置方法不起作用......它没有给变量赋值
【发布时间】:2013-04-09 20:34:19
【问题描述】:

伙计们。

我正在使用服务器、客户端和类库制作这个项目。 在类库中(我将其添加到服务器和客户端作为参考),例如:

string f = "not working";
public void SetString(string n)
{
  f = n;
}

public string GetStr ()
{
 return f;
}

我已经连接了客户端和服务器,它们工作正常,Get方法也工作但SET方法不起作用??当我从客户端调用 set 方法时,它没有设置我给出的值!!。 HttpChannel chan = new HttpChannel();

Tic obj = (Tic)Activator.GetObject(typeof(Tic), "http://127.0.0.1:9050/MyServer");

private void Form1_Load(object sender, EventArgs e)
    {
        ChannelServices.RegisterChannel(chan);
    }

private void button1_Click(object sender, EventArgs e)
    {
        string m = "working";
        obj.SetString(m);
    }

我再次重申,Get 方法工作正常,但只有 Set 方法......问题是它没有显示任何错误!它只是没有给字符串变量赋值!!

【问题讨论】:

  • 你怎么知道它不起作用?检查值设置的代码在哪里?
  • 我只是调用 Get 方法,它显示 f ="not working" 的值...
  • 你是在 Set 方法之后直接调用它的吗? string m = "working"; obj.SetString(m); Console.WriteLine(obj.GetStr());?
  • 还是在类的新实例上调用它并获得默认值“不工作”?
  • 是的,我确实在 se 方法之后调用了

标签: c# class get set


【解决方案1】:

如果我正确理解您的设置,您正在联系远程 http 服务器并调用设置变量值的方法。然后,您联系该 http 服务器并要求返回该值,您将获得原始值。

我不确定您托管的是哪种网络“服务器”,但大多数情况下,服务器只会在调用时实例化它们的类。所以基本上你正在联系一个服务器,它实例化任何包含“f”字符串的类。你设置值。服务器完成其工作并终止该进程。然后您再次联系服务器询问“f”的值,因此它再次实例化所有内容,这意味着该值将“不起作用”。

【讨论】:

  • 同意。然而,OP 似乎对 C# 基本知识(例如属性)知之甚少,因此我的建议仍然是他需要在进入复杂的客户端/服务器场景之前学习基础知识。
  • @spy 这也是我的猜测,没有看到其他代码。可能需要使用WellKnownObjectMode.Singleton 而不是.SingleCall 或者更好,将数据持久化到数据库,以便服务器可以是无状态的:csharphelp.com/2006/12/…
  • @AaronLS,thnx 的建议......我试过 SingleTon,现在它正在工作 thnx man D:
【解决方案2】:

您是否尝试过改用Properties

public class Foo
{
    public string Message {get;set;}
}

public class Bar
{
    public void Boz()
    {
        var foo = new Foo();
        foo.Message = "Working";
    }
}

【讨论】:

  • 不,我没有,说实话我真的看不懂你的代码:(
  • @TarionSelmani 请阅读有关我链接到的属性的 MSDN 文章。我还建议您在尝试实现复杂的东西(例如服务)之前阅读 C# 和 OOP 基础知识。
猜你喜欢
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
相关资源
最近更新 更多