我是C#编程语言的初学者。我正在尝试使用Getter和Setter来在ProjectA中设置字符串并在项目B中检索它。
项目B使用Windows窗体,我没有设置TextBox的值 使用检索到的字符串。
项目A是一个控制台项目,它只是从中读出一些东西 文件并将其存储在我想要检索的字符串中。
然而,这是我在项目B中的号召:
string cardOwner = Transmit.Program.CardOwner;
Debug.WriteLine("Card owner = " + cardOwner);
tb_cardholder.Text = cardOwner;
这是我在项目A中的Getter / Setter:
private static string _cardOwner;
public static string CardOwner
{
get
{
return _cardOwner;
}
set
{
_cardOwner = value;
}
}
_cardOwner = System.Text.Encoding.ASCII.GetString(bCardOwner);
但在项目B中,我得到了#34;"空字符串。
我在项目B中包含了项目A(添加了参考文献并编写了#34;使用ProjectA和#34;)。
任何想法出了什么问题?
感谢。
答案 0 :(得分:1)
仅仅因为你包含一个项目并在项目B中使用它的类,它并不意味着你也使用这些类的实例。
参加以下课程:
public class Test
{
public string Message { get; set; }
}
您可以将此类放入DLL项目(Tools
)并从其他项目引用它,例如WinForms项目ProjectA
和控制台项目ProjectB
。
在这两个项目中,您可以编写如下内容:
Test t = new Test() { Message = "Hello" };
这会创建Test
类的新实例,但两个正在运行的应用程序ProjectA
和ProjectB
不会交换数据!它们是完全分开的。
类属性也是如此。
答案 1 :(得分:0)
您无法轻松地在两个不同的应用程序之间共享信息。静态属性仅共享同一应用程序域中的数据,即同一Windows进程中的大多数简单星座。
如果要在两个不同进程之间传输数据,则需要使用显式机制进行进程间通信。
答案 2 :(得分:0)
此行何时执行?
_cardOwner = System.Text.Encoding.ASCII.GetString(bCardOwner);
您需要将其放入方法中并调用该方法(并且知道调用何时发生将有助于您了解未设置_cardOwner
的原因:
public static void Init()
{
_cardOwner = System.Text.Encoding.ASCII.GetString(bCardOwner);
}
然后在需要_cardOwner
:
Transmit.Program.Init();
string cardOwner = Transmit.Program.CardOwner;
tb_cardholder.Text = cardOwner;