【发布时间】:2015-10-30 09:07:36
【问题描述】:
我正在使用 C#、.Net 框架 4.5 我的解决方案中有两个项目,比如说 Project1 和 Project2,其中 Project1 添加为 Project2 的参考。 在 Project1 中,我有一个静态类“Global”,我在其中声明了一个公共静态对象列表:
namespace Solution.Project1
{
public static class Global
{
public static List<OM.User> AllActiveUsers;
}
}
在 Project2 中,我还有一个静态类“UserFactory”,其中我有一个使用 Project1 中的“AllActiveUsers”变量的静态方法:
namespace Sol.Project2
{
public static class UserFactory
{
public static List<OM.User> GetUsersDetails()
{
List<OM.User> ret = new List<OM.User>();
foreach (OM.User user in Project1.Global.AllActiveUsers) //here is the problem
{
//TODO: write logic
}
return ret;
}
}
}
我确保 AllActiveUsers 已启动并填充了 5 个用户对象,尽管在 Project2 中调用时它显示为 null! 是什么原因造成的?
更新: 不好意思我好像明白了,忘记了Project2中的方法不是直接调用的,是通过webservice调用的:
await ModMain.objWebService.GetUsersDetailsAsync();
但如果我立即从 UserFactory 调用我的方法:
UserFactory.GetUsersDetails();
那么 AllActiveUsers 不为空。 是造成这个问题的原因吗? 也许这篇文章被转换为关于从 web 服务调用方法时的问题的信息。
【问题讨论】:
-
I made sure that AllActiveUsers is initiated and filled with 5 User objects,。你能告诉我们你是在哪里做的吗? -
在您检查变量和您看到它为 null 之间,您的静态属性是否没有被修改?要检查这一点,您可以将静态成员临时转换为“get/set”属性,然后在“set”代码中添加断点。
-
@JurgenCamilleri 在应用程序启动时,我在 Program.cs 中对其进行了初始化。
-
@PaulDS 我添加了 set 和 get,当我只填充变量时,set 被访问过一次
-
这很奇怪......您可以尝试在 Global 类中创建一个“静态只读”字段,并使用内联初始化。如果您对此没有问题,请尝试删除“readonly”关键字。如果您也没有遇到问题,则表示问题不是来自多项目使用。
标签: c# .net web-services .net-4.5