Como posso serializar classes internas usando o XmlSerialize

Estou construindo uma biblioteca para interagir com terceiros. A comunicação é através de mensagens XML e HTTP. Isso está funcionand

Mas, qualquer que seja o código que use a biblioteca, não precisa estar ciente das classes internas. Meus objetos internos são serializados para XML usando este método:

internal static string SerializeXML(Object obj)
{
    XmlSerializer serializer = new XmlSerializer(obj.GetType(), "some.domain");

    //settings
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;
    settings.OmitXmlDeclaration = true;

    using (StringWriter stream = new StringWriter())
    {
        using (XmlWriter writer = XmlWriter.Create(stream, settings))
        {
            serializer.Serialize(writer, obj);
        }
        return stream.ToString();
    }
}

No entanto, quando altero o modificador de acesso das minhas classes parainternal, Recebo uma exceção emtempo de execuçã:

[System.InvalidOperationException] = {"MyNamespace.MyClass está inacessível devido ao seu nível de proteção. Somente tipos públicos podem ser processados."}

Essa exceção acontece na primeira linha do código acim

Gostaria que as aulas da minha biblioteca não fossem públicas porque não quero expô-las. Posso fazer isso? Como posso serializar tipos internos usando meu serializador genérico? O que estou fazendo errado

questionAnswers(5)

yourAnswerToTheQuestion