如何从类列表中获取静态属性
本文关键字:获取 静态 属性 列表 | 更新日期: 2023-09-27 18:12:05
我有这样的类:
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;
}
并且我有一个类似的返回类型:CCD_ 1,问题就在这里:如何从我的列表中获取静态属性
例如,我想获得StaticProvider.Address
StaticProvider.Logo。在列表中存储什么并不重要。
我认为您误解了静态变量的工作方式。假设你的类是用来表示某种联系的,那么你的变量一开始就不应该是静态的。它们应该是实例变量。
目前,给定两个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
}
请记住,静态成员属于类/类型,而不是实例-这就是为什么您不能访问实例的属性。
要访问StaticProvider
类实例上的字段,需要删除static
关键字。这将使字段改为属于一个实例,这样就可以继续了。
示例:
public class StaticProvider
{
...
public string Address;
...
}
一般来说,我认为使用公共财产比使用公共领域要好得多。通过属性,您可以封装对存储值的实际字段的访问。这样,您就可以更好地控制可以分配给该字段的内容,而且正如Jon Skeet所说,您还可以将公共"API"与数据的存储方式分离开来,这是一个很好的观点。