I want to restrict the possible types N can take-on using a constraint. I wish to restrict N to be either a int or a decimal.
public static Chart PopulateIn
To answer the question in the Title but not the body of the question.
To cover all types commonly meant by Value Types (which includes Nullable Value Types, and also string even though it's technically a Reference type), you need 3 overloads:
public void Foo(T arg) where T : struct
public void Foo(T? arg) where T : struct
public void Foo(string arg)
From the MSDN Docs on generic constraints:
where T : structThe type argument must be a non-nullable value type.