dotnet/roslyn
Vedi su GitHubGeneric interface inheritance conflict with extension method
Open
#16.843 aperta il 31 gen 2017
Area-CompilersBugConcept-Diagnostic Clarityhelp wanted
Metriche repository
- Star
- (20.414 star)
- Metriche merge PR
- (Merge medio 6g 17h) (256 PR mergiate in 30 g)
Descrizione
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
