Export (0) Print
Expand All

ProvidePropertyAttribute Class

Specifies the name of the property that an implementor of IExtenderProvider offers to other components.

For a list of all members of this type, see ProvidePropertyAttribute Members.

System.Object
   System.Attribute
      System.ComponentModel.ProvidePropertyAttribute

[Visual Basic]
<AttributeUsage(AttributeTargets.Class)>
NotInheritable Public Class ProvidePropertyAttribute
   Inherits Attribute
[C#]
[AttributeUsage(AttributeTargets.Class)]
public sealed class ProvidePropertyAttribute : Attribute
[C++]
[AttributeUsage(AttributeTargets::Class)]
public __gc __sealed class ProvidePropertyAttribute : public
   Attribute
[JScript]
public
   AttributeUsage(AttributeTargets.Class)
class ProvidePropertyAttribute extends Attribute

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Remarks

When you mark a class with this attribute, you tell the code generator to create an extender property with the name you provide. The marked class must implement IExtenderProvider. As a result, the new property can be used by other components in a container.

Within the marked class, you must implement Get <name> and Set <name> methods. For example, if you mark a class with [ProvideProperty("PropertyName")], you must implement GetPropertyName and SetPropertyName methods. To specify that the new property will be an extender property, you must implement from IExtenderProvider, you must also implement a CanExtend method.

For more information, see Attributes Overview and Extending Metadata Using Attributes.

Example

[Visual Basic, C#, C++] The following example marks MyClass with a ProvidePropertyAttribute that tells the compiler to create a property called MyProperty from the GetMyProperty and SetMyProperty methods.

[Visual Basic] 
<ProvideProperty("MyProperty", GetType(Control))> _
Public Class SampleClass
    Implements IExtenderProvider
    Protected ciMine As CultureInfo = Nothing

    ' Provides the Get portion of MyProperty. 
    Public Function GetMyProperty(myControl As Control) As CultureInfo
        ' Insert code here.
        Return ciMine
    End Function 'GetMyProperty

    ' Provides the Set portion of MyProperty.
    Public Sub SetMyProperty(myControl As Control, value As String)
        ' Insert code here.
    End Sub 'SetMyProperty

    ' When you inherit from IExtenderProvider, you must implement the 
    ' CanExtend method. 
    Public Function CanExtend(target As [Object]) As Boolean Implements IExtenderProvider.CanExtend
        Return TypeOf target Is Control
    End Function 'CanExtend

    ' Insert additional code here.

End Class

[C#] 
[ProvideProperty("MyProperty", typeof(Control))]
public class MyClass : IExtenderProvider {
    protected CultureInfo ciMine = null;
    // Provides the Get portion of MyProperty. 
    public CultureInfo GetMyProperty(Control myControl) {
        // Insert code here.
        return ciMine;
    }
    
    // Provides the Set portion of MyProperty.
    public void SetMyProperty(Control myControl, string value) {
        // Insert code here.
    }
    
    /* When you inherit from IExtenderProvider, you must implement the 
     * CanExtend method. */
    public bool CanExtend(Object target) {
        return(target is Control);
    }
    
    // Insert additional code here.
 }

[C++] 
[ProvideProperty(S"MyProperty", __typeof(Control))]
public __gc class MyClass : public IExtenderProvider {
protected:
    CultureInfo* ciMine;
    // Provides the Get portion of MyProperty. 
public:
    CultureInfo* GetMyProperty(Control* myControl) {
        // Insert code here.
        return ciMine;
    }
    
    // Provides the Set portion of MyProperty.
    void SetMyProperty(Control* myControl, String* value) {
        // Insert code here.
    }
    
    /* When you inherit from IExtenderProvider, you must implement the 
     * CanExtend method. */
    bool CanExtend(Object* target) {
        return dynamic_cast<Control*>(target) != 0;
    }
    
    // Insert additional code here.
 };

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Namespace: System.ComponentModel

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

Assembly: System (in System.dll)

See Also

ProvidePropertyAttribute Members | System.ComponentModel Namespace

Show:
© 2015 Microsoft