Это должно сделать это. Предположим, obj
- это объект, для которого вы хотите вызвать метод ...
var methodInfo = ( from m in obj.GetType().GetMethods()
where m.Name == method.ToString() &&
m.ReturnType == typeof(void)
let p = m.GetParameters()
where p.Length == 1 &&
p[0].ParameterType.IsAssignableFrom(typeof(T))
select m ).FirstOrDefault();
return (Action<T>)Delegate.CreateDelegate(typeof(Action<T>), obj, methodInfo);
Обратите внимание, что метод имеет , который должен быть общедоступным или настолько же доступным для отражающего кода, насколько это было бы без отражения, потому что Silverlight имеет очень ограниченное отражение закрытых методов.