In der Perspektive der Rückrufe, bin ich mit einer seltsamen Situation konfrontiert, als ich wusste, dass myDelegate.Target den Verweis auf die Klasse enthält, deren Methode es enthält. (Ich suchte es auf SO, aber ich entschuldige, wenn ich einig Thread bereits verpaßt diese zu beantworten)So sichern Sie Delegaten Instanzreferenz
Zum Beispiel
public delegate void TravePlanDelegate();
public class Traveller
{
//Papa is planing a tour, along with Mama
public void Planner()
{
//Asking me (delegate) to hold a letter about PlanA's detail
TravelPlanDelegate myPlan = PlanA;
//Sending me to TravelAgency office with letter
new TravelAgency().ExecuteTravelPlan(myPlan);
}
public void PlanA()
{
//Papa's open plan with Mama
Console.WriteLine("First Berline, then New Yark and finally Lahore");
}
public void PlanB()
{
//Papa's secret plan
Console.WriteLine("First Dubai, and then Lahore");
}
}
public class TravelAgency
{
public void ExecuteTravelPlan(TravePlanDelegate tp)
{
Traveller traveller = (Traveller)tp.Target;
//Here it should execute plan
//tp.Target - A reference to Traveler class, which can lead travel
//agency to Papa's secret plan (And exposes it to Mama)
}
}
In diesem Beispiel Informationen von travel Delegaten geheimen Plan über Papa bekommen. Habe ich das Delegiertenkonzept richtig verstanden oder etwas übersehen?
Gibt es möglicherweise feindlichen .NET-Code in Ihrem Prozess? Oder möchten Sie verhindern, dass API-Interna verloren gehen? – usr
Ich möchte Bibliotheken wie TravelAgency verwenden, aber ich bezweifle, dass sie in Details meiner eigenen Bibliothek gehen können. – Lali