泛型类构造函数获取父级,在父级中设置值

本文关键字:设置 构造函数 泛型类 获取 | 更新日期: 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