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