我有十几个继承自同一个基类的类。对于每个类,我希望在属性更新时更改状态,因此我有一个名为UpdateProperty(oldValue,newValue)的函数。我正在寻找一种方法来使这些泛型,这样当我添加一个新的类时,我不需要添加一个新的函数。这就是我所拥有的:
    public TicketType UpdateProperty(TicketType oldValue, TicketType newValue)
    {
        if (oldValue != newValue && ObjectState != ObjectState.New && ObjectState != ObjectState.Deleted)
        {
            ObjectState = ObjectState.Changed;
        }
        return newValue;
    }
    public Layout UpdateProperty(Layout oldValue, Layout newValue)
    {
        if (oldValue != newValue && ObjectState != ObjectState.New && ObjectState != ObjectState.Deleted)
        {
            ObjectState = ObjectState.Changed;
        }
        return newValue;
    }
    public Division UpdateProperty(Division oldValue, Division newValue)
    {
        if (oldValue != newValue && ObjectState != ObjectState.New && ObjectState != ObjectState.Deleted)
        {
            ObjectState = ObjectState.Changed;
        }
        return newValue;
    }
    public MasterDataList UpdateProperty(MasterDataList oldValue, MasterDataList newValue)
    {
        if (oldValue != newValue && ObjectState != ObjectState.New && ObjectState != ObjectState.Deleted)
        {
            ObjectState = ObjectState.Changed;
        }
        return newValue;
    }
    public MasterDataListItem UpdateProperty(MasterDataListItem oldValue, MasterDataListItem newValue)
    {
        if (oldValue != newValue && ObjectState != ObjectState.New && ObjectState != ObjectState.Deleted)
        {
            ObjectState = ObjectState.Changed;
        }
        return newValue;
    }
    public Ticket UpdateProperty(Ticket oldValue, Ticket newValue)
    {
        if (oldValue != newValue && ObjectState != ObjectState.New && ObjectState != ObjectState.Deleted)
        {
            ObjectState = ObjectState.Changed;
        }
        return newValue;
    }如您所见,它们都做同样的事情。有人能给我指个方向吗?
发布于 2017-12-13 18:04:22
是的,但是你必须创建一个泛型方法。如果需要,您可以将其放在基类中:
public T UpdateProperty<T>(T oldValue, T newValue)
{
    if (!object.Equals(oldValue, newValue) && this.ObjectState != ObjectState.New && this.ObjectState != ObjectState.Deleted)
    {
        this.ObjectState = ObjectState.Changed;
    }
    return newValue;
}https://stackoverflow.com/questions/47790200
复制相似问题