Pregunta

Tengo una plantilla de código que construye archivos en la carpeta de un proyecto, y utiliza las propiedades definidas en las clases parciales para determinar qué propiedades aún deben implementarse. Como ejemplo:

public partial class Thingy : IThingy
{
    public Foo Bar { get; set; }
}

public interface IThingy
{
    Foo Bar { get; set; }
    Baz Biz { get; set; }
}

y se supone que la plantilla genera:

public partial class Thingy
{
    Baz Biz { get; set; }
}

Puedo garantizar que la plantilla generará la información restante para satisfacer las expectativas de la interfaz y, por lo tanto, incluso podría generar la clase, excepto que el CsharpCodeProvider se resiste a la noción de obtener solo la mitad de la interfaz implementada en la parcialidad no generada. clase. ¿Hay alguna manera de decirle al proveedor que ignore que se está implementando una interfaz?

EDITAR: He pensado un poco más, y he imaginado una solución en la forma de leer la fuente primero en una cadena, eliminar las referencias de la interfaz y lanzar la cadena de código a CompileAssemblyFromSource en vez de CompileAssemblyFromFile, pero eso se siente súper Kludgy y es muy probable que introduzcan errores. ¿Pensamientos?

¿Fue útil?

Solución

Creo que debe modificar la fuente para eliminar la declaración de implementación de la interfaz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top