Компилятор C# не выводит вложенные шаблоны c types .
Expression<Func<TEntity, TRelatedEntity>>
- это вложенный обобщенный тип c. Ни TEntity
, ни TRelatedEntity
не выводятся во время компиляции. Таким образом, компилятор не знает, что Func<TEntity, TRelatedEntity>
можно присвоить Func<TEntity, Entity>
.
Например, без вложенного типа generi c ваш класс должен работать (хотя это может быть и не то, что вы хотите):
internal class RelationshipResolver<TEntity> where TEntity : Entity
{
private readonly List<Func<TEntity, Entity>> toOneExpressions =
new List<Func<TEntity, Entity>>();
internal RelationshipResolver<TEntity> Include<TRelatedEntity>(
Func<TEntity, TRelatedEntity> oneToOnerelationship)
where TRelatedEntity : Entity
{
toOneExpressions.Add(oneToOnerelationship);
return this;
}
}