Objekty zprostředkovatele rozšíření
Rozšiřující zprostředkovatel je součást, která obsahuje vlastnosti a další součásti.Například, když ToolTip přidání komponenty do formuláře, obsahuje vlastnost s názvem ToolTip pro každý ovládací prvek ve formuláři.ToolTip Vlastností se objeví v Vlastnosti okna pro každý řídit a umožňuje vývojáři nastavit hodnotu této vlastnosti v době návrhu.
Vlastnost od zprostředkovatele zařízení extender skutečně nachází v zařízení extender zprostředkovatel sám a proto není true vlastnost komponenty, které upraví.V době návrhu vlastnosti se zobrazí v Vlastnosti okno pro komponentu, která je právě upravován.V době spuštění však vlastnost nelze přistupovat prostřednictvím samotná komponenta.V následujícím příkladu kódu formuláře byla vytvořena pomocí tlačítka nazývá MyButton a ToolTip ovládacího prvku s názvem MyToolTip, která poskytuje ToolTip vlastnost.
' 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;
Tato syntaxe bude generovat chybu kompilace, protože kompilátor nerozpozná ToolTip jako vlastnost MyButton, protože vlastnost skutečně poskytnutých MyToolTip.Následující příklad ukazuje, jak správně přístup k vlastnosti:
Dim myString as String
myString = MyToolTip.GetToolTip(MyButton)
string myString;
myString = MyToolTip.GetToolTip(MyButton);
Rozšiřující zprostředkovatel je třída a jako takové mohou mít své vlastní vlastnosti a metody.Nastavit vlastnost jako vlastnost poskytované další součásti, použije ProvidePropertyAttribute atribut na úrovni třídy.Tento atribut určuje název vlastnosti poskytnout a typ objektu, který může poskytnout tuto vlastnost.Vlastnost poskytované úmluvou, není implementována jako vlastnost, ale spíše jako dvojice metody.Tyto metody musí mít "Get" a "Set" přidána na začátek názvu vlastnosti mají být poskytnuty.Následující příklad ukazuje jak.
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.
}
}
Bude vyžadovat provádění uvedených vlastností Hashtable nebo jiné takové kolekce objektu k záznamu a hodnot vlastností pro každý ovládací prvek.Další informace naleznete v tématu Postupy: Implementace poskytovatele rozšíření.
Každá třída extender musí implementovat IExtenderProvider rozhraní.Toto rozhraní obsahuje jedinou metodu, CanExtend, která vrátí logickou hodnotu a Návrhář označuje, zda je součást kandidáta prodloužena, nebo není.Můžete například vytvořit zařízení extender, která poskytuje vlastnosti pouze pro ovládací prvky.Následující příklad ukazuje, jak implementovat CanExtend metoda:
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;
}
Viz také
Úkoly
Postupy: Implementace poskytovatele rozšíření
Postupy: Implementace poskytovatele rozšíření HelpLabel