Using IComponentReference as a Generic Entity Type for Infor CRM Entities

Along the same lines as my previous article covering referencing entities using the IDynamicEntity interface to set and get properties by a string name instead of as a strongly-typed object, you can also use the IComponentReference interface as a generic entity type since all entities implement this interface. This interface is found in the Sage.Platform.ComponentModel namespace and is why all entities contain the Id property that returns the entities ID value, that is defined by this interface.

Using this interface allows you to create code that can be used from several different entity types. For example, instead of doing something like this:

string idValue;
string nameValue;

if (this.BindingSource.Current is IAccount)
    var account = this.BindingSource.Current as IAccount;
    idValue = account.Id.ToString();
    nameValue = account.ToString();
if (this.BindingSource.Current is IContact)
    var contact = this.BindingSource.Current as IContact;
    idValue = contact.Id.ToString();
    nameValue = contact.ToString();

You can simply do this:

var entity = this.BindingSource.Current as Sage.Platform.ComponentModel.IComponentReference;
var idValue = entity.Id; // provides the entity's ID value
var nameValue = entity.ToString(); // provides the entity's string expression

All entities implement IComponentReference, so you can use this interface to access the entity much like you would use IAccount, IContact, etc. You can use “.ToString()” to get the string expression of the actual entity and access the ID value as well. Note, the string expression you’ll get when you use ToString() is defined on the SalesLogix Extended tab of the entity. For accounts, this is the AccountName, for contacts this is LastName, FirstName, etc. To get to other properties you would either need to cast back to the actual entity type or use the IDynamicEntity interface to get the properties using string names.


Ryan Farley

Ryan Farley is the Director of Development for Customer FX and creator of He's been blogging regularly about SalesLogix, now Infor CRM, since 2001 and believes in sharing with the community. His new passion for CRM is Creatio, formerly bpm'online. He loves C#, Javascript, web development, open source, and Linux. He also loves his hobby as an amateur filmmaker.

Submit a Comment

Your email address will not be published.

Subscribe To Our Newsletter

Join our mailing list to receive the latest Infor CRM (Saleslogix) and Creatio (bpm'online) news and product updates!

You have Successfully Subscribed!