我有以下代码
var distributionUnits = _distributionUnitRepository.FindByCompanyId(userSession.CompanyId);
这会返回2条记录。但是,当我尝试以下演员。我没有记录。
var myentities = distributionUnits as List<IEntity>;
这种演员有可能吗?
更多信息
public interface IEntity
{
string Name { get; set; }
}
public class DistributionUnit : IEntity
{
public virtual string Name { get; set; }
}
答案 0 :(得分:2)
这会返回2条记录。但是,当我尝试以下演员。我没有记录。
var myentities = distributionUnits as List<IEntity>;
这种演员有可能吗?
好吧,你没有告诉我们DistributionUnitRepository.FindByCompanyId
的返回类型,但可能没有。你看,假设返回类型是List<DistributionUnit>
。如果你可以进行演员表演,可以采取以下措施:
class EvilEntity : IEntity { }
myentities.Add(new EvilEntity());
现在您刚刚在列表EvilEntity
中添加了List<DistributionUnit>
的实例,这显然很荒谬。
此外,如果DistributionUnitRepository.FindByCompanyId
的返回类型甚至不是List<DistributionUnit>
,而是说IEnumerable<DistributionUnit>
只是yield
,那么当然,演员阵容是不可能的
你可能想说
var myentitites = distributionUnits.Cast<IEntity>().ToList();
答案 1 :(得分:1)
var myentities = distributionUnits.Cast<IEntity>().ToList();
假设您的distributionUnits是IEntity或者是继承或实现IEntity的东西。