В основном, что вы описываете, является duck typing. Ближайшим эквивалентом C# является ключевое слово «dynamic», но я не думаю, что это именно то, о чем вы просите.
Как уже отмечалось, C# делает не, в общем, следовать модели типизации вы описали, и вы, вероятно, не хотите его к. Как показывает пример InBetween, существует большая разница между «тем же именем», «тем же интерфейсом» и «тем же , что означает».
Чтобы ответить на вопрос более конкретно, во-первых, я серьезно сомневаюсь в мудрости наличия двух одинаковых классов в отдельных пространствах имен - это кажется довольно явным нарушением принципа Don't Repeat Yourself. С учетом сказанного, если определить неявное преобразование между ними, которое должно позволить вам использовать их более или менее взаимозаменяемо (хотя недостатком этого является то, что он может запутать какой из двух объектов, о которых вы говорите, я склонен сказать что это плохая практика, основанная на этом факте).
Различное пространство имен = другой тип. VS не может (и, конечно же, не должен) автоматически определять ваши намерения в этом случае. Вам нужно будет предоставить оператор преобразования/литья. Взгляните на [Операторы преобразования C#] (https://msdn.microsoft.com/en-us/library/85w54y0a.aspx) – CoolBots
Просто попробуйте, и вы узнаете ответ ... –
Проблема с вопросом заключается в том, что вы принимаете то, о чем говорите. Два типа, которые отличаются в своем пространстве имен, являются разными типами *, потому что * они находятся в разных пространствах имен. Понятие о том, что два типа «одинаковы, но в разных пространствах имен», противоречиво. –