Extender Provider: DisplayName-Attribut in .NET 2.0
Extender Provider sind eine sehr nützliche Erfindung, ermöglichen Sie es doch, Komponenten um Eigenschaften zu erweitern, die diese nicht selbst implementieren. Um eine Extender-Eigenschaft als solche kenntlich zu machen, wird diese im PropertyGrid zusammen mit dem Namen der Extender-Klasse abgebildet. Dies sieht dann in etwa so aus:
[ProvideProperty("MyExtenderProperty", typeof(Control))]
public class MyExtender : Component, IExtenderProvider
{
Hashtable m_value;
public MyExtender()
{
m_value = new Hashtable();
}
[DisplayName("MyExtenderProperty")]
public string GetMyExtenderProperty(object obj)
{
if (m_value.Contains(obj))
{
return m_value[obj].ToString();
}
else
{
return string.Empty;
}
}
public void SetMyExtenderProperty(object obj, string value)
{
if (m_value.Contains(obj))
{
m_value[obj] = value;
}
else
{
m_value.Add(obj, value);
}
}
public bool CanExtend(object extendee)
{
return extendee is Control;
}
}
Im PropertyGrid wirkt es nun beispielsweise so, als wäre MyExtenderProperty eine vollwertige Eigenschaft der Form-Klasse.
In .NET 2.0 ist es nun möglich, diese Darstellungsform anzupassen. Hiefür wurde das DisplayName-Attribut eingeführt, dass oberhalb der Get-Methode des Extenders notiert werden kann. Das folgende Beispiel zeigt die Implementierung eines einfachen Extender Providers, der dieses Feature nutzt:
[ProvideProperty("MyExtenderProperty", typeof(Control))]
public class MyExtender : Component, IExtenderProvider
{
Hashtable m_value;
public MyExtender()
{
m_value = new Hashtable();
}
[DisplayName("MyExtenderProperty")]
public string GetMyExtenderProperty(object obj)
{
if (m_value.Contains(obj))
{
return m_value[obj].ToString();
}
else
{
return string.Empty;
}
}
public void SetMyExtenderProperty(object obj, string value)
{
if (m_value.Contains(obj))
{
m_value[obj] = value;
}
else
{
m_value.Add(obj, value);
}
}
public bool CanExtend(object extendee)
{
return extendee is Control;
}
}
Im PropertyGrid wirkt es nun beispielsweise so, als wäre MyExtenderProperty eine vollwertige Eigenschaft der Form-Klasse.
2 Comments:
NICE for giving a chance to share ideas
http://www.stovcdik.com/
http://www.privacylzone.com/
http://www.postgolden.com/
http://www.pregolden.com/
http://www.yandestravel.com/
By YOLAMA, at Dezember 17, 2019 7:34 AM
thanks for the quality details
http://www.leporstudioblog.com/
http://www.baron-diving.com/
http://www.galeryidoscope.com/
http://www.paiutereservation.com/
http://www.nukapoi.com/
By YOLAMA, at Dezember 17, 2019 7:34 AM
Kommentar veröffentlichen
<< Home