The duplicate answer you posted alluded to the problem.
VB.Net has the concept of a "Root Namespace". When you add a Namespace statement to the code file, the name given is combined with the root namespace to form the full namespace.
So, in VB.Net, if your root namespace is MyRoot and then you create a class and surround with a namespace of MyNamespace, then the full class name is MyRoot.MyNamespace.ClassName. If you don't use a Namespace statement, then the full class name is MyRoot.ClassName. In other words, the root namespace setting contributes to the name of the namespace.
In C#, this is not the case. C# has a "default namespace". This is simply a namespace definition that is automatically added to new classes when you create them. If you remove the namespace declaration, then the class has no namespace. In other words, the default namespace setting does not actually contribute to the name of the namespace.
In C#, whatever is on the namespace declaration is the namespace used. The default namespace setting only determines what is inserted by default in the code file.
Take this VB program that has a Root Namespace setting of "TestVBConsole" and no namespace statement in the class:
Module Module1
Sub Main()
Dim tc As New TestClass
Console.WriteLine(tc.GetType().FullName)
End Sub
End Module
and this class
Public Class TestClass
Public aField As String = "Default"
End Class
The output is
TestVBConsole.TestClass
The same program in C# outputs
TestClass
As to your question, I don't think there is any way to override that behavior. You just have to remember in C#, to make sure your namespace declarations are correct.