Обойти отсутствие частичного вывода обобщенного типа с ограничениями

У меня есть интерфейс (который используется в репозиториях), который имеет этот член:

T FindById<T, TId>(TId id)
    where T : class, IEntity<TId>
    where TId : IEquatable<TId>;

Это позволяет вызывающей стороне указывать тип объекта (T) и тип егоId&nbsp;поле (TId). Разработчик этого интерфейса найдет объекты типаT&nbsp;и использоватьid&nbsp;параметр для фильтрации их в соответствии с их идентификатором (который определяется наIEntity<TId>).

В настоящее время я называю это так:

int id = 123;
var myApproval = PartsDC.FindById<Approval, int>(id);

В идеале я хотел бы сделать это:

int id = 123;
var myApproval = PartsDC.FindById<Approval>(id);

Я прочитал ответы на этот вопрос:

Частичный вывод обобщенного типа возможен в C #?

Я понимаю, что не могу получить нужный синтаксис, но могу подобраться. Я не могу точно настроить его в моем случае, хотя из-за моих общих ограничений параметров.

Вот что у меня так далеко:

public class FindIdWrapper<T> where T : class
{
    public readonly IDataContext InvokeOn;

    public FindIdWrapper(IDataContext invokeOn)
    {
        InvokeOn = invokeOn;
    }

    T ById<TId>(TId id) where TId : IEquatable<TId>
    {
        return InvokeOn.FindById<T, TId>(id);
    }
}

public static class DataContextExtensions
{
    public static FindIdWrapper<T> Find<T>(this IDataContext dataContext) where T : class, IEntity
    {
        return new FindIdWrapper<T>(dataContext);
    }
}

Я получаю ошибку компиляции:

The type 'T' cannot be used as type parameter 'T' in the generic type or method 'PartsLegislation.Repository.IDataContext.FindById<T,TId>(TId)'. There is no implicit reference conversion from 'T' to 'PartsLegislation.Repository.IEntity<TId>'.

Я понимаю, что он говорит, потому чтоT&nbsp;в моем классе-обёртке ограничен только ссылочным типом, ноFindById&nbsp;функция хочет, чтобы это былоIEntity<TId>, но я не могу сделать это какTId&nbsp;в методе (в противном случае я вернулся на круги своя).

Как я могу обойти эту проблему (или я не могу)?