如何从类列表中获取静态属性

本文关键字:获取 静态 属性 列表 | 更新日期: 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"与数据的存储方式分离开来,这是一个很好的观点。