I have the following code
var distributionUnits = _distributionUnitRepository.FindByC开发者_运维技巧ompanyId(userSession.CompanyId);
This returns 2 records. However when i tried the following cast. I have no records.
var myentities = distributionUnits as List<IEntity>;
Is this kind of cast possible?
Further info.
public interface IEntity
{
string Name { get; set; }
}
public class DistributionUnit : IEntity
{
public virtual string Name { get; set; }
}
This returns 2 records. However when i tried the following cast. I have no records.
var myentities = distributionUnits as List<IEntity>;
Is this kind of cast possible?
Well, you haven't told us the return type of DistributionUnitRepository.FindByCompanyId
, but probably not. You see, let's say the return type is List<DistributionUnit>
. If you could make that cast, the following would be possible:
class EvilEntity : IEntity { }
myentities.Add(new EvilEntity());
and now you've just added an instance of EvilEntity
to your list List<DistributionUnit>
which is clearly absurd.
Further, if the return type of DistributionUnitRepository.FindByCompanyId
is not even a List<DistributionUnit>
, but say, IEnumerable<DistributionUnit>
that is just yield
ed, then of course the cast is impossible.
You probably want to say
var myentitites = distributionUnits.Cast<IEntity>().ToList();
var myentities = distributionUnits.Cast<IEntity>().ToList();
assuming your distributionUnits are either IEntity or something that either inherits or implements IEntity.
精彩评论