In my CRM custom plugin, when I ran an exact piece of code to retrieve optionset values in different functions, one of which encountered the following error:
Exception thrown: 'System.NullReferenceException' in program.exe
I have no idea why this is happening, as I do not have any other declarations of objects in between them,
Person Class
class PersonHandler { Helper helper = new Helper(); public void ProcessCase(DataRow row) { if (!(AreAllColumnsEmpty(row))) { if (condition) { Console.WriteLine(personEntity); //Person Console.WriteLine(person.gender); //gender_fieldname Console.WriteLine(row[Excel.gender]); //M var exists = helper.GetOptionSetValue(personEntity, person.gender, excelValue); //NullReferenceException } else { CreateNew(row); } } } public void CreateNew(DataRow row) { Console.WriteLine(personEntity); //Person Console.WriteLine(person.gender); //gender_fieldname Console.WriteLine(row[Excel.gender]); //M var exists = helper.GetOptionSetValue(personEntity, person.gender, excelValue); //no errors! } }
Helper Class
public class Helper { private OrganizationServiceProxy _proxy; private IOrganizationService _org; public int GetOptionSetValue(string entityName, string attributeName, string optionLabel) { RetrieveAttributeRequest retrieveAttributeRequest = new RetrieveAttributeRequest { EntityLogicalName = entityName, LogicalName = attributeName, RetrieveAsIfPublished = true }; RetrieveAttributeResponse retrieveAttributeResponse = (RetrieveAttributeResponse)_org.Execute(retrieveAttributeRequest); //error-ed out at this statement ... return 0; } }