Поскольку UML не должен напрямую зависеть от реализации, я бы использовал соглашение об именах, например:
OuterClass vs OuterClass::InnerClass
Я бы подумал, что если вы надеетесь провести обратный инжиниринг или генерацию кода в / из UML, то разные инструменты будут использовать разные методы (если они вообще его поддерживают).
Быстрый тест некоторых методов обратного инжиниринга с использованием Enterprise Architect (EA v7) подтверждает, что они используют приведенный выше синтаксис InnerClass::OuterClass
при обработке некоторого C # с открытым внутренним классом.