无法将表达式类型转换为返回类型

贾斯汀·皮霍尼(Justin Pihony)

我有以下可行的方法:

public Option<IAppSettings> GetFirst<T>() where T : IAppSettings
{
  return _sources.Where(x=>x.GetType() == typeof(T)).FirstOption();
}

List<IAppSettings> _sources;

但是,我想将签名更改为:

public Option<T> GetFirst<T>() where T : IAppSettings

请注意,我返回的是泛型T而不是IAppSettings

我收到错误消息(类型被截断):

无法将表达式类型转换Option<IAppSettings>Option<T>

我知道这事做泛型,但不可否认他们吮吸....我试过的不同手段inoutinterfacedelegate...但没有工作,因为这是用一个实例上的非通用类的方法变量。

这有可能吗?

更新的想法

我是否需要更改中的类型规格Option如果是这样,我猜它一定是Option<in T>我说这只是因为Scala的Option键入方式与Option[+A]我的来源相同Option,但是更改并推高它很麻烦...所以我想先在这里问一下,然后再尝试

Option来自我的鳞片叉子

武士刀314

您正在寻找Enumerable.OfType方法。这应该代替您的Where()方法。

https://msdn.microsoft.com/zh-CN/library/vstudio/bb360913(v=vs.100).aspx

您遇到的问题是,仅对类型执行“ if”检查实际上不会将其强制转换为T; 一旦通过了过滤,收集对象仍然仅是type IAppSettings我提到的C#标准函数将为您完成此任务。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Swift Closures:无法将“()”类型的返回表达式转换为“LiveSearchResponse”类型的返回类型?

无法将类型'CustomProfileCell'的返回表达式转换为返回类型'UITableViewCell'

无法将类型“[Favorite.Type]”的返回表达式转换为返回类型“[Favorite]”

无法将'Bool'类型的返回表达式转换为'Bool'类型的返回值

无法将返回表达式类型转换为带闭包的返回类型?

错误:PickerView“无法将类型为“[String]”的返回表达式转换为返回类型“String?” ”

无法将“FetchedResults<>”类型的返回表达式转换为返回类型“[String]”

无法将类型为Object <String>的返回表达式转换为类型为Object <Character>的返回表达式

无法将表达式的类型'()'转换为'UINavigationController类型?

Swift返回“无法将表达式的类型'NSArray'转换为'NSManagedObject'类型”

无法将“MopubBannerAdView”类型的返回表达式转换为“UIViewController”类型?

无法将类型为'child'的返回表达式转换为类型T

无法将类型[[(key:String,value:Int)]'的返回表达式转换为类型[[String:Int]]

无法将类型为“ AnyObject”的返回表达式转换为类型为“ NSComparisonResult”

无法将“ ForumViewController”类型的返回表达式转换为“ UITableViewCell”类型

无法将Lambda表达式转换为'int'类型

无法在 swift 中将“()”类型的返回表达式转换为“String”类型的返回类型

Lambda表达式中的返回类型错误:无法将Predicate <T>转换为Criteria <T>

无法将类型((AnyPublisher <DemoObject,Never>,APIError)'的返回表达式转换为类型'AnyPublisher <DemoObject,APIError>'

将强类型表达式转换为匿名类型返回

Swift 通用结构符合具有关联类型的协议,出现“无法将类型为 'String' 的返回表达式转换为返回类型为 'Key'”错误

无法将 lambda 表达式转换为 int 类型,因为它不是委托类型

无法将lambda表达式转换为类型'bool',因为它不是委托类型

Swift无法将表达式的类型“无效”转换为“字符串!”类型

无法将类型* json.RawMessage的表达式转换为golang中的[] byte类型

无法将表达式类型“ Dictionary”转换为“ StringLiteralConvertible”类型

无法将表达式的类型“ NSDictionary”转换为“ StringLiteralConvertible”类型

无法将lambda表达式转换为类型“ ...”,因为它不是委托类型

无法将 lambda 表达式转换为类型“DbContextOptions <DataContext>”,因为它不是委托类型