У вас две проблемы, которые выпрыгивают. Во-первых, вы пытаетесь придать объекту с одинаковым именем два значения. Даже если допустима перегрузка, как вы, это Очень плохой дизайн (тм) . Это будет очень запутанным для любого, кто будет смотреть на код позже.
Сделав вид, что вы изменили строковую версию на LocationName
как в производном классе, так и в ветви else метода, который вы показали, мы столкнулись со второй проблемой. Грубо говоря, у вас есть ссылка на базовый класс в этом методе. Однако вы пытаетесь вызвать метод из производного класса. Для этого вам необходимо либо еще больше ограничить универсальный тип, либо выполнить приведение типа.
Я не уверен, откуда взялись fooString
и otherPlace
в вашем примере, но если они оба должны быть одной и той же строкой, может быть лучше, чтобы ваш метод взял Func(Of String, BaseEvent)
вместо опоры на IsWorkCalendar
. В качестве побочного эффекта это устранит необходимость в том, чтобы метод был универсальным.