如何捕捉价值OOPS&通用

时间:2014-08-04 08:18:59

标签: c# oop generics

这是我的代码。

 class Program
    {
        static void Main(string[] args)
        {
            var _User = new User { Name="Test", Age=12 };
            _User.Save();
        }
    }

    public class DBObject<T>
    {
        public void Save()
        {

        }
    }

    public class User : DBObject<User>
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

我想捕获用户名&amp;年龄来自保存方法?我怎么能这样做...... plzz指南。感谢

1 个答案:

答案 0 :(得分:0)

在查看代码时,为什么要在泛型方法中读取特定于类的属性?

我看到的唯一解决方案是使用Reflection,或者使用before save方法创建一个抽象基类,并在de Save()方法中调用该方法。向DBObject类添加泛型类型约束,定义T是basetype。这样,您可以向泛型方法添加特定于类的功能。像这样:

public abstract class Base
{
     public virtual void BeforeSave()
     {

     }

}

public class User : Base
{
     public string Name { get; set; }
     public int Age { get; set; }      

     public override void BeforeSave()
     {
          // You can access your properties here
          if (this.Name.Trim() == "")
              throw new Exception("Name is mandatory!")
     }

}

public class DBObject<T>
    where T: Base
{
    public void Save()
    {
        T.BeforeSave();
    }
}