我正在尝试创建一个返回IRowMapper<T>
. 这是我的课程:
public abstract class Person
{
public int Id { get; set; }
protected void Person() { }
protected void Person(int id)
{
Id = id;
}
}
public class Employer : Person
{
public int EmployeeId { get; set; }
public void Employer() { }
public void Employer(int id, int employeeId) : base(id)
{
EmployeeId = employeeId;
}
}
public class Employee : Person
{
public int EmployerId { get; set; }
public void Employee() { }
public void Employee(int id, int employerId) : base(id)
{
EmployerId = employerId;
}
}
public static class MapBuilder<TResult> where TResult : new()
{
// ...
}
public interface IRowMapper<TResult>
{
TResult MapRow(IDataRecord row);
}
现在我想做的是如下所示:
private IRowMapper<T> GetRowMapper<T>() where T : Person, new()
{
var rowMapper = MapBuilder<T>.MapNoProperties()
.Map(c => c.Id).ToColumn("ID");
if (typeof (T) == typeof (Employee))
{
rowMapper =
((MapBuilder<Employee>) rowMapper).Map(c => c.EmployerId)
.ToColumn("EmployerID");
}
else if (typeof (T) == typeof (Employer))
{
rowMapper =
((MapBuilder<Employer>) rowMapper).Map(c => c.EmployeeId)
.ToColumn("EmployeeId");
}
return rowMapper.Build();
}
但我收到以下错误:
错误 2 无法将类型“Microsoft.Practices.EnterpriseLibrary.Data.IMapBuilderContext”转换为“Microsoft.Practices.EnterpriseLibrary.Data.MapBuilder”
错误 2 无法将类型“Microsoft.Practices.EnterpriseLibrary.Data.IMapBuilderContext”转换为“Microsoft.Practices.EnterpriseLibrary.Data.MapBuilder”
为什么演员阵容不行?