(this as A).Method()
((A)this).Method()
ps .. сам не пробовал ))
pps .. попробовал.. не прокатило ((
кстати -
protected вообще не дает использовать Method() в Some()
ppps любопытно, что на stackoverflow полно ответов типа моего, при чем многие отмечены ответами
совет - пересмотрите архитектуру на предмет применения интерфейсов и расширений.. я последние годы чуть ли не 90% кода реализую в расширениях, крайне редко новые классы (чаще просто структуры, а сейчас все чаще кортежи.. а то и вовсе безымянные кортежи ;))), и только по необходимости интерфейсы
по поводу
расширений - это вообще инструмент, позволяющий много разных элегантных решений
в частности можно реализовать одноименные расширения для всей иерархии A, B, C, и согласно различию сигнатуры входных параметров, они не будут конфликтовать. в том числе и ни каких проблем в наследованием и переопределением
вообще, с годами, убеждаюсь, что городить свою иерархию классов ооочень далеко НЕ всегда оправдано
pppps ну и раз такое дело - на всякий случай тоже подпишусь, вдруг есть современное решение ))
обещанный эскиз на основе расширений
https://dotnetfiddle.net/UTPZLv