Catel.Fody.CecilExtensions.GetNullableValueType C# (CSharp) Method

GetNullableValueType() public static method

public static GetNullableValueType ( this typeReference ) : TypeReference
typeReference this
return Mono.Cecil.TypeReference
        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();
        }