如何捕捉有价值的oop & &;通用的
本文关键字:oop 何捕捉 有价值 | 更新日期: 2023-09-27 18:16:38
下面是我的代码。
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; }
}
我想捕获用户名&保存方法中的年龄?我怎么能这样做......plzz指南。由于
在查看代码时,为什么要在泛型方法中读取特定于类的属性?
我看到的唯一解决方案是使用反射,或创建一个抽象基类与之前保存方法,并在de save()方法中调用该方法。向DBObject类添加泛型类型约束,定义T为基类型。通过这种方式,您可以向泛型方法添加特定于类的功能。像这样:
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();
}
}