Compartilhar via


Objetos de provedor do extensor

Um provedor do extensor é um componente que fornece propriedades para outros componentes.Por exemplo, quando um ToolTip componente é adicionado a um formulário, ele fornece uma propriedade chamada ToolTip a cada controle no formulário.O ToolTip propriedade aparece na Propriedades janela para cada controle e permite ao desenvolvedor definir um valor para essa propriedade em tempo de design.

A propriedade fornecida pelo provedor extender realmente reside no objeto de provedor de extensor e, portanto, não é uma propriedade true do componente que ele modifica.Em tempo de design, a propriedade será exibido na Propriedades janela para o componente que está sendo modificado.Em tempo de execução, no entanto, a propriedade não pode ser acessada por meio do próprio componente.No exemplo de código a seguir, um formulário foi criado com um botão chamado MyButton e um ToolTip controle chamado MyToolTip, que fornece uma ToolTip propriedade.

' This is an example of code that is NOT CORRECT!
Dim myString as String
myString = MyButton.ToolTip
// This is an example of code that is NOT CORRECT!
string myString;
myString = MyButton.ToolTip;

Essa sintaxe gerará um erro de compilação porque o compilador não reconhece ToolTip como uma propriedade do MyButton, porque a propriedade, na verdade, é fornecida por MyToolTip.O exemplo a seguir mostra como acessar corretamente essa propriedade:

Dim myString as String
myString = MyToolTip.GetToolTip(MyButton)
string myString;
myString = MyToolTip.GetToolTip(MyButton);

O provedor do extensor é uma classe e como tal, pode ter suas próprias propriedades e métodos.Para designar uma propriedade como a propriedade a serem fornecidos aos outros componentes, você aplica o ProvidePropertyAttribute atributo no nível de classe.Este atributo especifica o nome da propriedade para fornecer e o tipo de objeto pode fornecer essa propriedade para.Por convenção, a propriedade fornecida não é implementada como uma propriedade, mas como um par de métodos.Esses métodos devem ter "Obter" e "Conjunto" adicionado ao início do nome da propriedade a ser fornecido.A exemplo a seguir mostra como.

Imports System.ComponentModel
<ProvideProperty("MyText", GetType(Control))> Public Class MyExtender
   <ExtenderProvidedProperty()> Public Function GetMyText(acontrol as _
      Control) as String
      ' Insert code to implement function.
   End Function
   Public Sub SetMytext (acontrol as Control)
      ' Insert code to implement function.
   End Function
End Class
using System.ComponentModel;
[ProvideProperty("MyText", typeof("Control"))]
public class MyExtender
{
[ExtenderProvidedProperty()]
   public string GetMyText(Control acontrol)
   {
      // Insert code to implement method.
   }
   public void SetMyText(Control acontrol)
   {
      // Insert code to implement method.
   }
}

A implementação da propriedade fornecida exigirá uma Hashtable ou alguns outro tal objeto da coleção para gravar e recuperar os valores de propriedade para cada controle.Para obter detalhes, consulte:Como: implementar um provedor do extensor.

Cada classe extender também deve implementar a IExtenderProvider interface.Essa interface consiste em um único método, CanExtend, que retorna um valor Boolean e indica para o designer se um componente é um candidato para ser estendido ou não.Por exemplo, você talvez queira criar um extensor que fornece uma propriedade somente para controles.O exemplo a seguir mostra como implementar a CanExtend método:

Imports System.ComponentModel
Public Function CanExtend(ByVal extendee As Object) As Boolean _
   Implements IExtenderProvider.CanExtend
   If Typeof extendee Is Control Then
      Return True
   Else
      Return False
   End If
End Function
public bool CanExtend(object extendee) 
{
   if (extendee is Control)
      return true;
   else
      return false;
}

Consulte também

Tarefas

Como: implementar um provedor do extensor

Como: implementar um provedor Extender HelpLabel

Referência

IExtenderProvider

ProvidePropertyAttribute

Outros recursos

Extensor provedores