Я пытаюсь создать удобную среду отладки, где пользователи могут создавать как можно больше переменных отладки.
Мне нужно привести объект к типу возврата моего свойства / метода (bool, int, что угодно), без , зная, что это за тип возврата.
tldr : Как я могу вернуть не * generic тип c (в этом примере bool) из
public bool MyGetSetProperty {
get {
object obj = new object();
return (bool)obj;
}
}
БЕЗ указания "return (bool)"? Так что-то вроде
return (GenericThingHereThatPassesAsBool)obj;
или
return obj as MyGetSetPropertyReturnType;
----------
Detail:
Я хочу, чтобы пользователи иметь возможность создавать новые свойства в этом классе как можно проще - в основном копирование + вставка всего блока кода ниже, и только замена «SerializeAll» на имя их переменной, а объявление типа «bool» на тип, который они хотят в поле / объявления свойств.
В моем геттере у меня есть пара отдельных проверок, чтобы увидеть, включена ли вся система отладки. Если нет, он возвращает значение по умолчанию для данной переменной.
[Tooltip ("Serialize ALL XML output fields?"), SerializeField]
private bool debugSerializeAll = false;
/// <summary>
/// Serialize ALL XML output fields?
/// </summary>
[DebugValue, DebugDefault (true)]
public bool SerializeAll {
get {
if (!classEnabled || !debug.debugEnabled)
return (bool)GetDefaultValue (MethodBase.GetCurrentMethod ());
return debugSerializeAll;
}
set { debugSerializeAll = value; }
}
Дело в том, что я не могу вернуть "default", потому что значение по умолчанию может быть переопределено - см. Атрибут "DebugDefault", где Значение "default" для этого bool на самом деле равно "true", по крайней мере, что касается моей системы отладки. Метод «GetDefaultValue» подходит для этого и возвращает объект , который может быть строкой, int, bool, чем угодно.
Я уже делаю причудливые вещи для отражения, чтобы получить доступ к MethodInfo , PropertyInfo, et c геттера и свойство SerializeAll. Я просто не могу понять, как , а не должны также указывать (bool) приведение к возврату. Опять же, целью является как можно меньшее редактирование человеком.
Спасибо!