2011-07-12 9 views
6

Actualmente estoy trabajando en una biblioteca que se expondrá a COM para su uso en un proyecto heredado que se está actualizando. Estoy creando interfaces que deben exponerse, y tienen propiedades con tipos largos, int, etc. Usando DescriptionAttribute, puedo obtener las cadenas de ayuda generadas en .tlb para interfaces, clases y métodos, pero por alguna razón no parece querer trabajar para las propiedades. ¿Hay alguna forma de obtener una ayuda generada en la salida TLB para las propiedades?Obteniendo el atributo helptring aplicado a las propiedades de C# expuestas a través de las interfaces COM

Respuesta

8

Debe colocar el atributo en el captador y el colocador individualmente. De esta manera:

using System; 
using System.ComponentModel; 
using System.Runtime.InteropServices; 

namespace ClassLibrary1 { 
    [ComVisible(true), InterfaceType(ComInterfaceType.InterfaceIsDual)] 
    public interface IFoo { 
     int property { 
      [Description("prop")] 
      get; 
      [Description("prop")] 
      set; 
     } 
    } 
} 

La repetición de la descripción es torpe, pero también es necesaria en IDL.

+1

Sí, eso funcionó. ¿Hay alguna manera de hacer lo mismo con los parámetros del método? No puedo hacer que esos trabajen tampoco. Para los métodos en sí, está bien, pero no los parámetros ni los valores devueltos. –

+1

No, no es compatible con bibliotecas de tipos. –

+0

Sé que esto es ruido, pero * necesito * agradecerle @HansPassant. Cada vez que tengo una pregunta sobre COM, ahí está con una respuesta. – RubberDuck

Cuestiones relacionadas