dotnet/roslyn
GitHub で見るGeneric interface inheritance conflict with extension method
Open
#16,843 opened on 2017年1月31日
Area-CompilersBugConcept-Diagnostic Clarityhelp wanted
Repository metrics
- Stars
- (20,414 stars)
- PR merge metrics
- (平均マージ 6d 17h) (30d で 256 merged PRs)
説明
I write 2 class inherit each other and each implement IEnumerable with difference generic type
Like this
public class A : IEnumerable<object>
{
public IEnumerator<object> GetEnumerator()
{
throw new NotImplementedException();
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
public class B : A, IEnumerable<string>
{
public new IEnumerator<string> GetEnumerator()
{
throw new NotImplementedException();
}
}
////
static void Test()
{
var a = new A();
var b = new B();
a.Select((item,i) => i);
b.Select((item,i) => i);
}
Instance from A work fine but B cannot use all generic function in System.Linq

It seem B was seen by compiler that it is just IEnumerable but not IEnumerable<string>. It still have Cast<> and OfType<> exposed
