In SharePoint the value of SPField.Type is Invalid for TaxonomyField. I was looping though the fields of a List and checking the Type of the field. So, I had to make extra check using TypeAsString to identify the Taxonomy field. If the value of TypeAsString is either "TaxonomyFieldType" or "TaxonomyFieldTypeMulti", then it is a TaxonomyField.
Follwoing is the code:
Follwoing is the code:
private string GetFieldValue(SPField field, SPListItemVersion version)
{
string fieldValue = string.Empty;
SPFieldType fieldType = field.Type;
switch (fieldType)
{
case SPFieldType.Lookup:
SPFieldLookup newField = (SPFieldLookup)field;
fieldValue = newField.GetFieldValueAsText(version[field.StaticName]);
break;
case SPFieldType.User:
SPFieldUser newUser = (SPFieldUser)field;
fieldValue = newUser.GetFieldValueAsText(version[field.StaticName]);
break;
case SPFieldType.ModStat:
SPFieldModStat modStat = (SPFieldModStat)field;
fieldValue = modStat.GetFieldValueAsText(version[field.StaticName]);
break;
case SPFieldType.URL:
SPFieldUrl urlField = (SPFieldUrl)field;
fieldValue = urlField.GetFieldValueAsHtml(version[field.StaticName]);
break;
case SPFieldType.Invalid:
if (field.TypeAsString.Equals("TaxonomyFieldType") || field.TypeAsString.Equals ("TaxonomyFieldTypeMulti"))
{
TaxonomyField taxonomyField = field as TaxonomyField;
fieldValue = taxonomyField.GetFieldValueAsText(version[field.StaticName]);
}
else
{
fieldValue = version[field.StaticName].ToString();
}
break;
default:
fieldValue = version[field.StaticName].ToString();
break;
}
return fieldValue;
}