Теперь я сталкиваюсь с проблемой ограничения типа c #.
Я написал пару методов, которые могут преобразовывать объект в строку и преобразовывать строку в объект.
напр.
static string ConvertToString(Type type, object val) {
if (type == typeof(string)) return (string)val;
if (type == typeof(int)) return val.ToString();
if (type.IsSubclassOf(typeof(CodeObject))) return ((CodeObject)val).Code;
}
static T ConvertToObject<T>(string val) {
Type type = typeof(T);
if (type == typeof(string)) return (T)(object)val;
if (type == typeof(int)) return (T)(object)int.Parse(val);
if (type.IsSubclassOf(typeof(CodeObject))) return Codes.Get<T>(val);
}
где CodeObject является базовым классом сотрудников, офисов ...,
которые могут быть получены статическим методом Codes.Get где T: CodeObject
, но код выше не может быть скомпилирован, потому что ошибка # CS0314
универсальный тип T метода ConvertToObject не имеет никаких ограничений
но запрос Codes.Get T должен быть подклассом CodeObject
Я пытался использовать перегрузку для решения проблемы, но не в порядке.
есть ли способ решить проблему? как отражение?