我有一个对象集合作为我的类中的一个属性实现IFoo
. 我想添加一种方法,用于按类型和谓词(特定于具体实现)从集合中检索项目。我遇到的问题是,我无法从接口定义的集合向下转换到我的具体类(无法从使用中推断出类型),如下所示:
public HashSet<IFoo> Foos { get; } = new HashSet<IFoo>();
public T GetFoo<T>(Func<T, bool> predicate) where T : class
{
if (Foos != null && predicate != null)
{
var foos = Foos.Where(f => f is T);
return foo = foos.FirstOrDefault(predicate);
}
return null;
}
我怎样才能做到这一点?
由于您HashSet
的类型为IFoo
,因此预计您的谓词也使用IFoo
. 完成此操作的最简单方法是更改方法的签名:
public IFoo GetFoo<T>(Func<IFoo, bool> predicate) where T: IFoo, class
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句