I'm writing a method to do a intelligent type conversion - using ToString() if the type parameter happens to be a string, otherwise casting but returning null if the cast doesn't work. Basically gets as much information out of v
it can without throwing an exception.
I check that T
is indeed a string
before I attempt the cast, but the compiler is still not a fan:
Cannot convert type 'string' to 'T'
And here's my method:
public T? Convert<T>(object v)
{
if (typeof(T) == typeof(string)) {
return (T)v.ToString(); // Cannot convert type 'string' to 'T'
} else try {
return (T)v;
} catch (InvalidCastException) {
return null;
}
}
Also let me know if this is some sort of unforgivable sin. I'm using it to deal with some data structures that could have mixed types.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…