Cómo agregar la ubicación de esquemas xsi al objeto raíz c # XmlSerializer

Estoy usando XmlSerializer para crear un objeto que representa un archivo XML y ahora quiero agregar una ubicación de esquema a la ubicación de mi archivo xml. Puedo agregar espacios de nombres como los siguientes

        XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
        System.IO.FileStream fs = new FileStream(@"C:\test.xml", FileMode.Create);
        TextWriter writer = new StreamWriter(fs, new UTF8Encoding());

        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add("xy","http://www.w3.org/2005/08/addressing");
        ns.Add("xlink","http://www.w3.org/1999/xlink");
        serializer.Serialize(writer, myObject, ns);

Pero, ¿cómo agrego unxsi:schemalocation atribuir a mi elemento raíz dentro de mi código c #. Se agregó el espacio de nombres con un simplens.Add(). Me gustaría evitar perder el tiempo con la clase c # generada con xsd.exe. ¿O tengo que editar manualmente la clase c # generada y agregar algún atributo al elemento raíz de mi xml?

EDITAR: He visto ejemplos en los que necesito editar mi c # manualmente, ¡pero debe haber una forma de hacerlo en código! Si somos capaces de agregar espacios de nombres a nuestro elemento raíz, ¿por qué no sería posible agregar esquemas de ubicación?

Respuestas a la pregunta(2)

Su respuesta a la pregunta