J'essaye de créer un "wrapper" autour d'un objet dynamique afin que je puisse conserver les noms de méthode sur un objet dynamique correspondant aux noms des méthodes de la classe d'habillage. Ce que je dois faire est de fournir à l'assistant un objet dynamic
, et le nom de la méthode que je veux appeler (via [CallerMemberName]
), et les args pour l'appel. Je ne peux pas comprendre comment appeler l'appel sur l'objet dynamique. Comment puis-je faire ceci?Appeler une méthode sur un objet dynamique par son nom
class Program
{
static void Main(string[] args)
{
var dyn = new ClassWithDynamicProperty();
dyn.SendMessage("test");
Console.ReadKey();
}
}
public class ExampleDynamicClass
{
public void SendMessage(string msg)
{
Console.WriteLine(msg);
}
}
public class ClassWithDynamicProperty
{
public ClassWithDynamicProperty()
{
MyDynObject = new ExampleDynamicClass();
}
public dynamic MyDynObject { get; set; }
public void SendMessage(string theMessage)
{
//i want to replace this:
MyDynObject.SendMessage(theMessage);
//with this:
DynamicHelper.CallDynamic(MyDynObject, new object[] { theMessage });
}
}
public static class DynamicHelper
{
public static void CallDynamic(dynamic source, object[] args, [CallerMemberName]string methodName = null)
{
//source.methodName(args); How can i invoke this?
}
}
Alors pourquoi avez-vous besoin de dynamique alors? Vous pouvez utiliser la réflexion n'est-ce pas? –
Ceci est juste un échantillon. J'utilise SignalR qui a des objets dynamiques. J'ai trouvé une solution mais je suis sur le point de poster. – DLeh