C# 如何使用反射从没有 IConvertible 的类型进行转换
C# How to cast from Type without IConvertible using reflection
我的 returnCastTo 方法的值来自错误的类型。
CastTo 方法有一个 returning 参数 < T >。
注释行是在不使用反射的情况下所做的
//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 只是没有合适的构造函数来允许创建它,我无法使用 [=21 将其转换为类型=] 因为它没有 IConvertible 实现。
有没有其他方法可以转换我的变量或更改方法的 return 类型?
我认为你的问题是你将 field 对象传递给 genericCastTo 而不是 FieldChoice.
我的 returnCastTo 方法的值来自错误的类型。 CastTo 方法有一个 returning 参数 < T >。
注释行是在不使用反射的情况下所做的
//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 只是没有合适的构造函数来允许创建它,我无法使用 [=21 将其转换为类型=] 因为它没有 IConvertible 实现。
有没有其他方法可以转换我的变量或更改方法的 return 类型?
我认为你的问题是你将 field 对象传递给 genericCastTo 而不是 FieldChoice.