gpt4 book ai didi

c# - 为什么 IEntityCollection 是内部的/如何找到 EntityCollection.Count?

转载 作者:行者123 更新时间:2023-11-30 22:44:33 25 4
gpt4 key购买 nike

在 RIA 服务中 EntityCollection<T> class定义如下:

public sealed class EntityCollection<TEntity> : IEntityCollection, 
IEnumerable<TEntity>,
IEnumerable,
INotifyCollectionChanged,
INotifyPropertyChanged where TEntity :
global::System.ServiceModel.DomainServices.Client.Entity

我有一个设置 Visibility 的 Silverlight 转换器取决于列表中的项目数。

 if (value is EntityCollection<CustomerFeedbackDetail>)
{
visible = (value as EntityCollection<CustomerFeedbackDetail>).Count > 0;
}

但是等等 - 我希望它对任何 EntityCollection 都是通用的。 哦哦 - IEntityCollection是内部的,我们无法访问。 EntityCollection 甚至没有实现 ICollection。

我是否在没有使用反射的情况下卡住了(我真的不想这样做,因为在某些情况下这可能每秒被调用多次)。

我很确定我必须使用反射来使这个通用 - 所以在那种情况下为什么会 IEntityCollection是内部的?监督?

最佳答案

您可以自己实现函数,而不是使用反射。您不关心计数,只关心它是非零的。只需重写 Enumberable.Any(IEnumerable<T>)采取非泛型的功能IEnumerable :

public static bool Any(this System.Collections.IEnumerable source)
{
if (source == null)
throw new ArgumentNullException("source");

return source.GetEnumerator().MoveNext();
}

然后在您的转换器中您将拥有:

if (value is EntityCollection<CustomerFeedbackDetail>) 
{
visible = (value as IEnumerable).Any();
}

关于c# - 为什么 IEntityCollection 是内部的/如何找到 EntityCollection<T>.Count?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3393801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com