Нет необходимости переопределять XmlWriter, просто используйте экземпляр XmlSerializerNamespace:
Sub Main()
Dim xSer As New XmlSerializer(GetType(MyType))
Dim sb As New StringBuilder()
Dim obj As MyType = getAnInstanceOfMyType()
Using wrt As New StringWriter(sb)
Dim ns As New XmlSerializerNamespaces
ns.Add("", "")
xSer.Serialize(wrt, obj, ns)
End Using
Console.WriteLine(sb.ToString())
Console.ReadLine()
End Sub
Это приведет к тому, что у xml вообще не будет пространств имен.
РЕДАКТИРОВАТЬ: изменено на код VB
РЕДАКТИРОВАТЬ 2: После дальнейшего тестирования, тестовый код, который я использовал, только удалял объявления пространства имен из получающегося xml. Мой первоначальный тест не производил атрибуты xsi: type для элементов, даже если я использовал классы, предоставленные OP, поэтому я не могу определить, удалит ли их код, который я разместил, как упоминал Джон Саундер в комментариях. Я предполагал, что если пространства имен будут удалены, то атрибуты xsi: type также будут удалены, но размещенный мною код не доказывает этого.