就是想要下面这段代码的效果(我知道C#不支持,只是希望大家能提供一种变通的方法达到这种效果):public class tblProduct
{
    public int ProductID { get; set; }
    public static string ProductID
    {
        get { return "tblProduct.ProductID"; }
    }
    public string ProductName { get; set; }
    public static string ProductName
    {
        get { return "tblProduct.ProductName"; }
    }
}

解决方案 »

  1.   


    tblProduct t1 = new tblProduct(){ProductName = "t1"};
    tblProduct t2 = new tblProduct(){ProductName = "t2"};
    string name = tblProduct.ProductName;  // t1 or t2 ?
      

  2.   

    为啥要用同名的呢?
     public class tblProduct
        {
            public int ProductID { get; set; }
            public string ProductName { get; set; }
            public struct Product
            {
                public static string ProductID = "tblProduct.ProductID";
                public static string ProductName = "tblProduct.ProductName";
            }
        }
      

  3.   

    我想用类的实例来存取数据,没有实例时,则只返回成员的名称。
    你这个想法估计不是很好。
    用类的实例调用时怎么可能返回静态属性呢?
    比如下面的代码:
    tblProduct tp = new tblProduct();
    string pName = tp.ProductName;//调用实例需要对象引用,而静态属性要直接用类名来调用。
    如果这个引用是null的话,直接就报错了。就算你上面的代码编译通过,也不可能调用到静态属性的。
      

  4.   

    如果能放在同一个类里,就可以实现以下代码了:
    tblUser user = daoContext<tblUser>.getModel(tblUser.UserID=100);
      

  5.   


    class daoContext<T>
    {
       public static T getModel(T pototype)
       {
          PopulateDBTo(prototype);
          return prototype;
       }
    }tblUser user = daoContext.getModel(new tblUser(){UserID = 100} );
      

  6.   

    tblProduct p = GetAProduct() ?? new tblProduct() { ProductID = "tblProduct.ProductID", ProductName = "tblProduct.ProductName" };相当于
    tblProduct p = GetAProduct();
    if (p == null)
    {
        p = new tblProduct();
        p.ProductID = "tblProduct.ProductID";
        p.ProductName = "tblProduct.ProductName";
    }
        
      

  7.   

    如果你能够从实际出发,更多地描述一点需求背景,那么我想很多人都能告诉你。至少会给你一个什么“Singleton“之类的名词儿。还是多描述业务需求,避免“过分技术化”。
      

  8.   

    额,直接手段做不到,我通常是采用一个静态方法new一个实例出去这样你var obj=tblProduct.NewInstance();就可以了,当然如果想更简单点,自己用expression<func<T,T>>封一到也可以
      

  9.   

    哦,我错了,虽然上面的方法可以,不过似乎不是想要的东西,你仔细看了一下,其实你要得好像就是对象的元数据描述啊,如果是元数据描述,就不需要想了,自己扩一个geiMeta的静态方法,直接用反射把元数据描述提取出来就是了