If I have a generic method that is constrained to be type 'int' then surely I should be able to cast an integer to the generic T type. For example...
public T ExampleMethod<T>(int unchanged) where T : int { return (T)unchanged; } ...the compiler complains that Cannot convert type 'int' to 'T' but I have a constraint indicating that the target is as integer. So surely it should work?
Update:
The actual scenario is that I want to a helper method that returns an enum value. So my ideal helper method would be more like this....
public T GetAttributeAsEnum<T>(XmlReader reader, string name) where T : enum { string s = reader.GetAttribute(name); int i = int.Parse(s); return (T)i; } ...and use it like this...
StateEnum x = GetAttributeAsEnum<StateEnum>(xmlReader, "State"); CategoryEnum y = GetAttributeAsEnum<CategoryEnum>(xmlReader, "Category"); OtherEnum z = GetAttributeAsEnum<OtherEnum>(xmlReader, "Other"); ...but you cannot constrain by enum.
T?Tis always int then why to use generics?