class Base<T>
{
public virtual void Foo(Base<T> obj) { }
}
class Derived : Base<Derived>
{
internal class Base<P> { }
}
Override method Base<T>.Foo in inheritor class. Wrong code is generated bacause conflicting nested class is disregarded:
class Base<T>
{
public virtual void Foo(Base<T> obj) { }
}
class Derived : Base<Derived>
{
public override void Foo(Base<Derived> obj) /* error CS0115: 'Derived.Foo(Derived.Base<Derived>)': no suitable method found to override */
{
base.Foo(obj);
}
internal class Base<T> { }
}
Expected result:
using Base_1 = Base<Derived>;
class Base<T>
{
public virtual void Foo(Base<T> obj) { }
}
class Derived : Base<Derived>
{
public override void Foo(Base_1 obj)
{ base.Foo(obj); } }
internal class Base<T> { }
}