diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonPropertyInfoOfT.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonPropertyInfoOfT.cs index de34a5bb0b7fd5..40941d2c53f04b 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonPropertyInfoOfT.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonPropertyInfoOfT.cs @@ -46,12 +46,12 @@ private protected override void SetGetter(Delegate? getter) else if (getter is Func typedGetter) { _typedGet = typedGetter; - _untypedGet = getter is Func untypedGet ? untypedGet : obj => typedGetter(obj); + _untypedGet = getter is Func untypedGet ? untypedGet : obj => _typedGet(obj); } else { Func untypedGet = (Func)getter; - _typedGet = (obj => (T)untypedGet(obj)!); + _typedGet = (obj => (T)_untypedGet!(obj)!); _untypedGet = untypedGet; } } @@ -69,12 +69,12 @@ private protected override void SetSetter(Delegate? setter) else if (setter is Action typedSetter) { _typedSet = typedSetter; - _untypedSet = setter is Action untypedSet ? untypedSet : (obj, value) => typedSetter(obj, (T)value!); + _untypedSet = setter is Action untypedSet ? untypedSet : (obj, value) => _typedSet(obj, (T)value!); } else { Action untypedSet = (Action)setter; - _typedSet = ((obj, value) => untypedSet(obj, value)); + _typedSet = ((obj, value) => _untypedSet!(obj, value)); _untypedSet = untypedSet; } } @@ -100,12 +100,12 @@ private protected override void SetShouldSerialize(Delegate? predicate) else if (predicate is Func typedPredicate) { _shouldSerializeTyped = typedPredicate; - _shouldSerialize = typedPredicate is Func untypedPredicate ? untypedPredicate : (obj, value) => typedPredicate(obj, (T?)value); + _shouldSerialize = typedPredicate is Func untypedPredicate ? untypedPredicate : (obj, value) => _shouldSerializeTyped(obj, (T?)value); } else { Func untypedPredicate = (Func)predicate; - _shouldSerializeTyped = (obj, value) => untypedPredicate(obj, value); + _shouldSerializeTyped = (obj, value) => _shouldSerialize!(obj, value); _shouldSerialize = untypedPredicate; } } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoOfT.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoOfT.cs index 7a00b678d59899..ad5f2b3e4ffe16 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoOfT.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoOfT.cs @@ -86,13 +86,13 @@ private protected override void SetCreateObject(Delegate? createObject) else if (createObject is Func typedDelegate) { typedCreateObject = typedDelegate; - untypedCreateObject = createObject is Func untypedDelegate ? untypedDelegate : () => typedDelegate()!; + untypedCreateObject = createObject is Func untypedDelegate ? untypedDelegate : () => _typedCreateObject!()!; } else { Debug.Assert(createObject is Func); untypedCreateObject = (Func)createObject; - typedCreateObject = () => (T)untypedCreateObject(); + typedCreateObject = () => (T)_createObject!(); } _createObject = untypedCreateObject;