C # позволяет это, поэтому не должно быть ошибок.
Я воспроизвел то, что вы показали нам, с некоторым добавленным кодом, и это работает. Так что это должно быть что-то еще, что вызывает ошибку.
Проверьте здесь, это работает:
using System;
public class Test
{
public static void Main()
{
Grandchild g = new Grandchild();
}
}
class Base
{
public int i=10;
}
class DerivedFromBase : Base
{
public DerivedFromBase()
{
Console.WriteLine(i);
}
}
class Grandchild : DerivedFromBase
{
public Grandchild()
{
Console.WriteLine(i);
}
}