C# 实施ienumerable的正确方法<;t>;没有代码重复
目前我已经实现了它,如下所示,但我不喜欢它,因为GetEnumerator中的代码重复,我如何删除重复C# 实施ienumerable的正确方法<;t>;没有代码重复,c#,linq,ienumerable,C#,Linq,Ienumerable,目前我已经实现了它,如下所示,但我不喜欢它,因为GetEnumerator中的代码重复,我如何删除重复 public class EodSettlementRequestStubData : IEnumerable<SettlementRequest> { public SettlementRequest UnapprovedFlows; public SettlementRequest UnapprovedRecovery; public Settleme
public class EodSettlementRequestStubData : IEnumerable<SettlementRequest>
{
public SettlementRequest UnapprovedFlows;
public SettlementRequest UnapprovedRecovery;
public SettlementRequest UnverifiedFlows;
public SettlementRequest UnverifiedRecovery;
IEnumerator<SettlementRequest> IEnumerable<SettlementRequest>.GetEnumerator()
{
yield return UnapprovedFlows;
yield return UnapprovedRecovery;
yield return UnverifiedFlows;
yield return UnverifiedRecovery;
}
public IEnumerator GetEnumerator()
{
yield return UnapprovedFlows;
yield return UnapprovedRecovery;
yield return UnverifiedFlows;
yield return UnverifiedRecovery;
}
}
公共类EodSettlementRequestStubData:IEnumerable
{
未经批准的公共结算请求流;
未经批准的公共结算请求;
未经验证的公共结算请求流;
未经核实的公共结算请求;
IEnumerator IEnumerable.GetEnumerator()
{
未经批准的收益率流动;
未经批准的收益回收;
未经验证的收益率流;
未经验证的收益率;
}
公共IEnumerator GetEnumerator()
{
未经批准的收益率流动;
未经批准的收益回收;
未经验证的收益率流;
未经验证的收益率;
}
}
我想有能力访问它既作为个人,以及一个IEnumerable做一些linq的东西
我可以创建一个列表来避免代码重复,但我觉得应该有更好的方法来处理这个问题…只要让非泛型版本调用泛型版本就行了(同样,让Explicit接口版本为非泛型
IEnumerable
而不是泛型IEnumerable
,这更“正常”)
公共类EodSettlementRequestStubData:IEnumerable
{
未经批准的公共结算请求流;
未经批准的公共结算请求;
未经验证的公共结算请求流;
未经核实的公共结算请求;
公共IEnumerator GetEnumerator()
{
未经批准的收益率流动;
未经批准的收益回收;
未经验证的收益率流;
未经验证的收益率;
}
IEnumerator IEnumerable.GetEnumerator()
{
//这是在调用“IEnumerator GetEnumerator()”
返回GetEnumerator();
}
}
只要让非泛型版本调用泛型版本就行了(同样,让explicit接口版本为非泛型IEnumerable
而不是泛型IEnumerable
更“正常”)
公共类EodSettlementRequestStubData:IEnumerable
{
未经批准的公共结算请求流;
未经批准的公共结算请求;
未经验证的公共结算请求流;
未经核实的公共结算请求;
公共IEnumerator GetEnumerator()
{
未经批准的收益率流动;
未经批准的收益回收;
未经验证的收益率流;
未经验证的收益率;
}
IEnumerator IEnumerable.GetEnumerator()
{
//这是在调用“IEnumerator GetEnumerator()”
返回GetEnumerator();
}
}
resharper默认情况下将非泛型创建为public。。这实际上是问题的根源。。谢谢你的邀请answer@entre不,真的没有。@entre我也可以证实它没有。我使用Resharper,它总是让通用的公共化。唯一可能发生这种情况的方法是,如果你让它实现IEnumerable
,然后你告诉它实现IEnumerable
@Scott你完全正确,我确实做到了。默认情况下,Resharper将非泛型的创建为public。。这实际上是问题的根源。。谢谢你的邀请answer@entre不,真的没有。@entre我也可以证实它没有。我使用Resharper,它总是让通用的公共化。唯一可能发生的方法是,如果你让它实现IEnumerable
,然后你告诉它实现IEnumerable
@Scott你完全正确,我确实做到了
public class EodSettlementRequestStubData : IEnumerable<SettlementRequest>
{
public SettlementRequest UnapprovedFlows;
public SettlementRequest UnapprovedRecovery;
public SettlementRequest UnverifiedFlows;
public SettlementRequest UnverifiedRecovery;
public IEnumerator<SettlementRequest> GetEnumerator()
{
yield return UnapprovedFlows;
yield return UnapprovedRecovery;
yield return UnverifiedFlows;
yield return UnverifiedRecovery;
}
IEnumerator IEnumerable.GetEnumerator()
{
//This is calling "IEnumerator<SettlementRequest> GetEnumerator()"
return GetEnumerator();
}
}