泛型类构造函数获取父级,在父级中设置值
本文关键字:设置 构造函数 泛型类 获取 | 更新日期: 2023-09-27 17:59:28
我正在创建一组庞大的类,在其中我使用泛型类构造函数扩展了这些类的功能。
现在,我想将所有特定于域的逻辑移到这个通用构造函数中,但是,当调用"扩展"中的方法时,我有点纠结于如何获得调用方对象。当在父类中调用方法时,等于"this"。
此外,当从扩展调用时,我如何在父级中设置Id?long id
是我希望能够从一般调用的方法更改的值。在任何使用DomainLogic构造函数扩展的类中,它总是存在很长时间。
示例:
public class TestUser : DomainLogic<TestUser>
{
public TestUser(string Name)
{
this.Id = 0;
this.Name = Name;
}
public long Id { get; set; }
public string Name { get; set; }
public override int GetHashCode()
{
return (int)Id;
}
}
public class DomainLogic<T> where T : class
{
public void Save()
{
//
// Code that stores the object in repository here.
// How do i get the calling object?
// Repo<T>.Save(calling object)
//
// Otherwise i have to use:
//
// public void Save(T entity)
// {
// if(entity.GetHashCode() == 0)
// {
// // entity.Id = Repo<T>.Next(); // How can i set a parent value from generic called method?
//
// // More logic we apply when this is considered a newly saved object.
// }
// else
// {
// // More logic we apply when this is considered a modified object.
// }
//
// Repo<T>.Save(entity);
// }
//
}
}
[
Id
属性]在任何使用DomainLogic构造函数扩展的类中始终存在
如果希望能够从DomainLogic<T>.Save()
访问Id
属性,请将其放入DomainLogic
类中。
此外,您可以在DomainLogic<T>.Save()
中使用this
。