Ich versuche, eine Methode in einem aspx.cs zu nennen, aber ein InvalidOperationException
mit NachrichtAufrufe von Methoden dynamisch mit Reflexion
Spät gebunden Operationen können nicht auf Typen oder Methoden für durchgeführt werden, bekommen die Contains wahr sind.
Mein Code ist:
protected void BuildSurface(int newValue)
{
IEnumerable<dynamic> models = InitializeConfigurationForWorkflow(newValue);
List<Panel> panelList = new List<Panel>();
foreach (dynamic workflowConfiguration in models)
{
Type dynamicType = workflowConfiguration.GetType();
if (dynamicType.IsGenericType)
{
Type genericDynamicType = dynamicType.GetGenericTypeDefinition();
string methodName = null;
if (genericDynamicType.In(typeof(List<>), typeof(IEnumerable<>), typeof(IList<>)))
methodName = "GenerateListPanel";
else if (genericDynamicType == typeof(Dictionary<,>))
methodName = "GenerateDictionaryPanel";
if (methodName.IsNullOrEmpty()) continue;
Type[] listType = genericDynamicType.GetGenericArguments();
MethodInfo method = typeof(_admin_WorkflowConfiguration)
.GetMethods()
.Where(w => w.Name.Equals(methodName))
.First();
MethodInfo generic = method.MakeGenericMethod(listType);
panelList.Add(generic.Invoke(this, workflowConfiguration})); // here the error appears
}
}
}
meine Methoden, die aussehen wie diese aufgerufen wird:
public Panel GenerateListPanel<T>(IEnumerable<T> workflowConfiguration)
{
Panel panel = new Panel();
return panel;
}
Der dynamisch-Wert ist ein json, die entweder Wörterbuch oder Liste deserialisiert wird .
Irgendeine Idee, was ich falsch mache?
Sie nicht wollen 'Type [] listtype = dynamicType.GetGenericArguments();' – dbc