MemberRelationshipService Class


Provides the base class for relating one member to another.

public ref class MemberRelationshipService abstract
public abstract class MemberRelationshipService
type MemberRelationshipService = class
Public MustInherit Class MemberRelationshipService


The MemberRelationshipService simplifies retrieval of a property value from another location. A designer can access this service to dictate that one member is assigned the value of another. The code generator searches for such relationships when generating code, and if a relationship between two members is found the code generator, it emits code for the relationship rather than searching for the property value. Using the previous text assignment as an example, the following code example shows design time code used to establish a relationship.

object titleLabel, form;  
PropertyDescriptor titleLabelText = TypeDescriptor.GetProperties(titleLabel)["Text"];  
PropertyDescriptor formText = TypeDescriptor.GetProperties(form)["Text"];  
MemberRelationshipService ms = GetService(typeof(MemberRelationshipService);  
ms[titleLabel, titleLabelText] = new MemberRelationship(form, formText);  


Designers serialize themselves to code through an engine that searches through the live property values of objects and generates those values as code. So, for example, the text of a button is generated in the following format.

this.okButton.Text = "OK";  

One of the limitations of this scheme is that it is difficult to retrieve a property from another location. For example, it is very difficult to emit code in the following format, because the only thing the code generator can rely on is the value in the property.

this.titleLabel.Text = this.Text;  

Notes to Implementers

The MemberRelationshipService class is abstract. Implementing a concrete version varies depending on the types of members that are supported. For example, relating one event to another might require a different implementation than relating one property to another. Implementing the service requires the following steps:



Initializes a new instance of the MemberRelationshipService class.



Establishes a relationship between a source and target object.

Item[Object, MemberDescriptor]

Establishes a relationship between a source and target object.



Determines whether the specified object is equal to the current object.

(Inherited from Object)

Serves as the default hash function.

(Inherited from Object)

Gets a relationship to the given source relationship.


Gets the Type of the current instance.

(Inherited from Object)

Creates a shallow copy of the current Object.

(Inherited from Object)
SetRelationship(MemberRelationship, MemberRelationship)

Creates a relationship between the source object and target relationship.

SupportsRelationship(MemberRelationship, MemberRelationship)

Gets a value indicating whether the given relationship is supported.


Returns a string that represents the current object.

(Inherited from Object)

Applies to

See also