为何编译器无法推断泛型类型,但智能感知却可以?
泛型方法类型参数推断问题
我定义了如下泛型类:
public class SomeClass<TA>{ public SomeClass(Func<IList<TA>> myFunc){...} public OtherClass<TA, TM> CreateOther<TM>(Func<TA, Func<TM>> func) {...} }
调用CreateOther方法时,我必须显式指定TM,否则会编译报错“无法从用法推断类型参数”,示例代码如下:
mySomeClass.CreateOther<string>(a=>a.GiveString) //相关定义 public class StringGiver{ public string GiveString() => "Hello"; } //实例化代码 var creatorFunc = ()=> new List<StringGiver> {new ()}; var mySomeClass = new SomeClass(creatorFunc);
我认为应该能通过GiveString的返回类型推断出TM,而且智能感知/ReSharper会将<string>标灰,提示“类型参数规范冗余”。我没有依赖任何约束,不认为这是重复问题。
内容的提问来源于stack exchange,提问作者GrimmReaper
相关产品推荐
相关产品推荐

