C # Как привести из Типа без IConvertible, используя отражение - PullRequest
0 голосов
/ 29 апреля 2019

Мое возвращаемое значение метода CastTo от неправильного типа. Метод CastTo имеет возвращаемый параметр .

Закомментированная строка - это то, что она делает без использования отражения

            //FieldChoice ChoiceProduct = clientContext_temp.CastTo<FieldChoice>(field);
            Type FieldChoiceType = sharepointClient.GetType("Microsoft.SharePoint.Client.FieldChoice");
            object FieldChoice = Activator.CreateInstance(FieldChoiceType, sharepointClient, web.);
            MethodInfo castToMethodInfo = typeclientContext.GetMethod("CastTo");
            MethodInfo genericCastTo = castToMethodInfo.MakeGenericMethod(field.GetType());
            var ChoiceProduct = genericCastTo.Invoke(clientContext, new object[] { field });
            ChoiceProduct = Convert.ChangeType(ChoiceProduct, FieldChoiceType);

Choiceproduct относится к типу Field, но должно быть к типу FieldChoice.

Проблема в том, что я не могу создать экземпляр Fieldchoice до того, как метод приведет к тому, что sharepoint просто не имеет пригодного конструктора, позволяющего создать его, и я не могу привести его к типу с помощью Convert.changeType, потому что он не имеет реализации IConvertible.

Есть ли другой способ, которым я могу привести свою переменную или изменить тип возвращаемого значения метода?

1 Ответ

0 голосов
/ 29 апреля 2019

Я думаю, что ваша проблема в том, что вы передаете объект field в genericCastTo вместо FieldChoice .

...