我有这样的课程:
public class StaticProvider
{
public static int ID_DR;
public static string CorporateName;
public static string Logo;
public static string Address;
public static string Suite;
public static string City;
public static string State;
public static Decimal Zip;
public static string Phone;
public static string Facebook;
public static string Twitter;
public static string Doctor;
public static string Password;
public static string Email;
public static string OfficeWebLink_URL;
public string Provider_Name;
public int Provider_id;
}
我有一个这样的返回类型:List<StaticProvider> Lst= new List<StaticProvider>()
,
问题在这里:
如何从我的列表中获取静态属性
对于Exaple我想得到StaticProvider.Address
答案 0 :(得分:3)
StaticProvider.Logo。你在列表中存储什么并不重要。
答案 1 :(得分:3)
我认为你误解了静态变量的工作方式。假设您的类要表示某种联系,那么您的变量不应该是静态的。它们应该是实例变量。
目前,给定StaticProvider
的两个实例,您可以有两个不同的Provider_id
值,但不能有两个不同的密码,地址等 - 因为只有一个 Password
字段,用于类型本身,而不是该类型的任何特定实例。
此外,最好使用属性而不是公共字段 - 将您的类型的公共API与您在类型中存储数据的方式分开。最后,遵循.NET命名约定(删除下划线)并为您的类提供更有意义的名称。例如:
public class Contact
{
public string CorporateName { get; set; }
public string Logo { get; set; }
...
public int ProviderId { get; set; }
}
说实话,“提供者”到底是什么并不是很清楚。也许你真的想要两个类:
public class ContactProvider
{
public string ProviderName { get; set; }
public int ProviderId { get; set; }
public Contact LoadContact(int contactId)
{
...
}
}
public class Contact
{
public string CorporateName { get; set; }
public string Logo { get; set; }
// No need for provider properies, or possibly one of type ContactProvider
}
答案 2 :(得分:0)
请记住,静态成员属于类/类型而不属于实例 - 这就是您无法访问实例属性的原因。
要访问StaticProvider
类实例上的字段,您需要删除static
关键字。这将使该字段属于一个实例,而你会很高兴。
示例:
public class StaticProvider
{
...
public string Address;
...
}
作为一般性评论,我认为使用公共属性而不是公共字段要好得多。使用属性,您可以封装对存储值的实际字段的访问。通过这种方式,您可以更好地控制可以分配给字段的内容,正如Jon Skeet所说,您还将公共“API”与数据存储方式分开 - 这是一个很好的观点。