aceitável (ab) usar CoClassAttribute para fornecer uma implementação padrão para uma interfac
Descobri recentemente que é possível "novo" uma interface em C # decorando a interface com oCoClassAttribute
para especificar uma implementação padrã
[ComImport, Guid("579A4F68-4E51-479A-A7AA-A4DDC4031F3F"), CoClass(typeof(FooImpl))]
public interface IFoo
{
void Bar();
}
public class FooImpl : IFoo
{
public void Bar() { }
}
...
// Constructs a FooImpl
IFoo foo = new IFoo();
Estou ciente de que esse recurso existe principalmente para oferecer suporte à interoperabilidade COM, mas eu queria saber se isso seria uma maneira razoável de associar interfaces a implementações padrão em bibliotecas de classes genérica
Eu tenho duas perguntas
Há alguma dica em fazer isso? Não sou especialista em interoperabilidade COM e não sei se isso terá algum impacto negativo nos POCOs. Não executei nenhum teste importante, mas a IL do meu exemplo parece ok (uma @ normnewobj
instruções emFooImpl
em vez de ligar paraType.GetTypeFromCLSID
eActivator.CreateInstance
).
Mesmo se isso funcionar sem problemas, existem outros motivos (digamos, sob uma perspectiva de design de API) para evitar iss