【发布时间】:2013-11-22 04:27:11
【问题描述】:
我有一个基本的抽象泛型类,它应该能够通过表达式获取对象的标识符:
public abstract class Entity<TId> where TId : IEquatable<TId>
{
protected abstract Expression<Func<Entity<TId>, TId>> GetEntityId();
}
但是当我尝试从中派生(并实现抽象方法)时:
public class IntEntity : Entity<int>
{
public int Id { get; set; }
protected override Expression<Func<Entity<int>, int>> GetEntityId()
{
Expression<Func<IntEntity, int>> exp = e => e.Id;
return exp; // CS0029 error
}
}
我得到 CS0029 编译错误,说
不能隐式转换类型 '
System.Linq.Expressions.Expression<System.Func<ConsoleApplication1.IntEntity,int>>' 到 'System.Linq.Expressions.Expression<System.Func<ConsoleApplication1.Entity<int>,int>>'
对此我有什么办法吗?
【问题讨论】: