C# 设置方法为';不工作。。。它没有';不要给变量赋值

C# 设置方法为';不工作。。。它没有';不要给变量赋值,c#,class,get,set,C#,Class,Get,Set,该死的家伙 我用一个服务器、一个客户端和一个类库来制作这个项目。 在类库(我添加到服务器和客户端作为参考)中,我有一个示例: string f = "not working"; public void SetString(string n) { f = n; } public string GetStr () { return f; } 我已经连接了客户端和服务器,它们工作正常,Get方法也工作,但是SET方法不工作??当我从客户端调用set方法时,它不会设置我给定的值!!。 Http

该死的家伙

我用一个服务器、一个客户端和一个类库来制作这个项目。 在类库(我添加到服务器和客户端作为参考)中,我有一个示例:

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

public string GetStr ()
{
 return f;
}
我已经连接了客户端和服务器,它们工作正常,Get方法也工作,但是SET方法不工作??当我从客户端调用set方法时,它不会设置我给定的值!!。 HttpChannel chan=新的HttpChannel()

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

您是否尝试过改用

你试过用它来代替吗


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


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

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



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

您如何知道它不起作用?检查设置值的代码在哪里?我只调用Get方法,它会显示f=“not working”的值……您是在set方法之后调用它的吗<代码>字符串m=“正在工作”;对象固定管柱(m);Console.WriteLine(obj.GetStr())?还是在类的新距离上调用它并获得默认值“not working”?是的,我在se方法之后调用了它。您如何知道它不工作?检查设置值的代码在哪里?我只调用Get方法,它会显示f=“not working”的值……您是在set方法之后调用它的吗<代码>字符串m=“正在工作”;对象固定管柱(m);Console.WriteLine(obj.GetStr())?还是在类的新距离上调用它并获得默认值“not working”?是的,我在se方法之后调用了不,我没有,说实话,我真的无法理解您的代码:(@TarionSelmani请阅读有关我链接的属性的MSDN文章。我还建议您在尝试实现复杂的东西(如服务)之前,先阅读C#和OOP基础知识。不,我没有,说实话,我真的不理解您的代码:(@TarionSelmani请阅读MSDN中有关我链接的属性的文章。我还建议您在尝试实现复杂的东西(如服务)之前先阅读C#和OOP基础知识。同意。但是OP似乎对C#基本知识(如属性)知之甚少,因此我的建议仍然是,他需要在实现之前学习基础知识我们正在进入复杂的客户机/服务器场景。@spy这也是我的推测,没有看到其他代码。可能需要使用
WellKnownObjectMode.Singleton
而不是
。SingleCall
或者更好,将数据持久化到数据库,以便服务器可以是无状态的:@AaronLS,thnx获得建议…我尝试了Singleton,没有工作正常。男D:同意。但是OP似乎对C#基本知识(如属性)知之甚少,因此我的建议仍然是,在进入复杂的客户机/服务器场景之前,他需要学习基础知识。@spy这也是我的推测,没有看到其他代码。可能需要使用
WellKnownObjectMode.Singleton
而不是
.SingleCall
,或者更好的方法是将数据持久化到数据库中,以便服务器可以是无状态的:@AaronLS,thnx作为建议…我尝试了Singleton,现在它正在工作thnx man D:
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);
    }
public class Foo
{
    public string Message {get;set;}
}

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