public static TypeReference GetNullableValueType(this TypeReference typeReference)
{
if (!typeReference.IsGenericInstance)
{
return null;
}
if (!typeReference.FullName.Contains("System.Nullable`1"))
{
return null;
}
var genericInstanceType = typeReference as GenericInstanceType;
if (genericInstanceType == null)
{
return null;
}
if (genericInstanceType.GenericArguments.Count != 1)
{
return null;
}
var genericParameter = genericInstanceType.GenericArguments[0];
if (!genericParameter.IsValueType)
{
return null;
}
return genericParameter.GetElementType();
}