Я сталкиваюсь с запутанной проблемой с методом цепочки и типа вывода при работе с унаследованными классами в c#. < /p>
Я понимаю, что AddBlock определяется в классе, но, поскольку классб является экземпляром класса, я ожидал Вызовите метод, который ожидает объекта Classb. < /p>
Вот упрощенный пример: < /p>
namespace Demo
{
public class ClassA
{
public ClassA AddBlock(ClassA classA) => this;
}
public class ClassB : ClassA
{
//public ClassB AddBlock(ClassA classA) => this;
}
public class ClassC
{
public ClassC AddBlock(ClassB classB) => this;
}
class Program
{
static void Main()
{
var classB = new ClassB();
var classC = new ClassC();
var newBlockB01 = classB;
newBlockB01.AddBlock(classB);
var newBlockB02 = (ClassB)classB.AddBlock(classB);
var newBlockB03 = classB.AddBlock(classB);
classC.AddBlock(newBlockB01); // Works as expected
classC.AddBlock(newBlockB02); // Works as expected
classC.AddBlock(newBlockB03); //Does not work Error CS1503
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... is-context