作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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/
在 RIA 服务中 EntityCollection class定义如下: public sealed class EntityCollection : IEntityCollection,
我是一名优秀的程序员,十分优秀!