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;
}
}