Так что я предполагаю, что вам нужно передать ссылку на bool, которую нельзя обернуть классом BoolWrapper, потому что bool живет в каком-то месте, которое вы не можете или не хотите изменять.
Это можно сделать!
Сначала объявите, как будет выглядеть любая ссылка на bool
/// <summary> A reference to a bool.</summary>
/// <param name="value">new value</param>
/// <returns>Value of boolean</returns>
public delegate bool BoolRef(bool? value = null);
Теперь вы можете сделать ссылку на myBool следующим образом
bool myBool; // A given bool that you cannot wrap or change
private bool myBoolRef(bool? value) {
if (value != null) {
myBool = (bool)value;
}
return myBool;
}
И используйте это так:
void myTestCaller() {
foo(myBoolRef);
}
void foo(BoolRef b) {
bool c = b(); // get myBool
b(true); // set myBool to true
}
Тот же трюк работает для других типов значений, таких как int