Динамические структуры значения не присваиваются
Я проверял эту проблему в течение многих лет. У меня есть две разные структуры, которые мне нужно передать в качестве параметров в общую функцию. Эти две структуры имеют внутри другую структуру, которая является общей для обеих. Если корень динамический, то значения не присваиваются во внутренней структуре.
В фоновом режиме существует также проблема, что вместо того, чтобы иметь одну структуру ref dynamic, я должен иметь две структуры, потому что вы не можете передать ref struct в ref dynamic или наоборот. Почему?
Внутренние структуры имеют размер, хотя он и не указан в этом коде.
Мне не помогает то, что мне говорят думать по-другому, потому что в общей функции у меня есть много вещей, которые являются общими для обеих структур, и некоторые вещи, которые отличаются.
public struct St_A { public dynamic MyValue1; public string MyValue2; public struct St_A1 StProp public struct St_COMMON StCommon; } public struct St_B { public struct St_COMMON StCommon; } public struct St_A1 { public dynamic MyValue3; public string MyValue4; } public struct St_COMMON { public int Value; } MyFunction() { struct St_A StA = new St_A(); struct St_B StB = new St_B(); dynamic MyRet = Function_Common(true, ref StA, ref StB) } public static Function_Common(bool Struct_is_A, ref St_A StA, ref St_B StB) { dynamic MyStruct = null; if (Struct_is_A) MyStruct = (St_A)StA; else MyStruct = (St_B)StB; // This Works. MyStruct.MyValue1 = "10"; MyStruct.MyValue2 = "10"; // PROBLEM. It does not produce an error and does not assign the value. If from the // debugger I perform the same action, then it is assigned. MyStruct.StProp.MyValue3 = "10"; MyStruct.StProp.MyValue4 = "10"; // PROBLEM. It does not produce an error and does not assign the value. If from the // debugger I perform the same action, then it is assigned. MyStruct.StCommon.Value = 10; }
Что я уже пробовал:
в Аль-сайтах интернета.в Аль-сайтах интернета.