Click here to Skip to main content
15,904,926 members
Home / Discussions / C#
   

C#

 
GeneralRe: private/public get/set Pin
George_George6-May-08 4:04
George_George6-May-08 4:04 
GeneralRe: private/public get/set Pin
PIEBALDconsult6-May-08 13:17
mvePIEBALDconsult6-May-08 13:17 
GeneralRe: private/public get/set Pin
George_George7-May-08 2:40
George_George7-May-08 2:40 
GeneralRe: private/public get/set Pin
PIEBALDconsult7-May-08 13:04
mvePIEBALDconsult7-May-08 13:04 
GeneralRe: private/public get/set Pin
George_George7-May-08 22:34
George_George7-May-08 22:34 
AnswerRe: private/public get/set Pin
PIEBALDconsult3-May-08 4:35
mvePIEBALDconsult3-May-08 4:35 
GeneralRe: private/public get/set Pin
George_George3-May-08 4:40
George_George3-May-08 4:40 
AnswerRe: private/public get/set Pin
Luc Pattyn3-May-08 5:40
sitebuilderLuc Pattyn3-May-08 5:40 
GeneralRe: private/public get/set Pin
PIEBALDconsult3-May-08 5:46
mvePIEBALDconsult3-May-08 5:46 
GeneralRe: private/public get/set Pin
George_George3-May-08 19:38
George_George3-May-08 19:38 
GeneralRe: private/public get/set Pin
George_George3-May-08 19:37
George_George3-May-08 19:37 
GeneralRe: private/public get/set Pin
Luc Pattyn3-May-08 22:49
sitebuilderLuc Pattyn3-May-08 22:49 
GeneralRe: private/public get/set Pin
George_George4-May-08 0:00
George_George4-May-08 0:00 
QuestionAutomated Mail Merge: Help! Pin
Member 42630173-May-08 2:44
Member 42630173-May-08 2:44 
Questioninterface implementation Pin
George_George3-May-08 2:19
George_George3-May-08 2:19 
AnswerRe: interface implementation Pin
Roger Alsing3-May-08 2:28
Roger Alsing3-May-08 2:28 
GeneralRe: interface implementation Pin
George_George3-May-08 2:31
George_George3-May-08 2:31 
AnswerRe: interface implementation Pin
snorkie3-May-08 2:30
professionalsnorkie3-May-08 2:30 
GeneralRe: interface implementation Pin
George_George3-May-08 2:33
George_George3-May-08 2:33 
GeneralRe: interface implementation Pin
snorkie3-May-08 2:41
professionalsnorkie3-May-08 2:41 
GeneralRe: interface implementation Pin
George_George3-May-08 2:43
George_George3-May-08 2:43 
AnswerRe: interface implementation Pin
tgrt3-May-08 14:51
tgrt3-May-08 14:51 
GeneralRe: interface implementation Pin
George_George3-May-08 18:15
George_George3-May-08 18:15 
GeneralRe: interface implementation Pin
tgrt4-May-08 4:07
tgrt4-May-08 4:07 
QuestionA static riddle (or: how to avoid lazy instantiation?) Pin
Luca Leonardo Scorcia3-May-08 1:45
professionalLuca Leonardo Scorcia3-May-08 1:45 
Let's say I have a resource broker, a 'lookup resource' event and a main program that will invoke the lookup resource event. All of these reside in decoupled modules, there may be only one resource broker and of course only one lookup event definition.

I created the following classes to implement the situation above:

class Program
{
   static void Main(string[] args)
   {
       Console.WriteLine("Program::Main");
       EventBroker.Current.FireLookupResource(null, EventArgs.Empty);

       Console.ReadLine();
   }
}

public class EventBroker
{
    private static readonly EventBroker _current = new EventBroker();
    public static EventBroker Current { get { return _current; } }

    public event EventHandler LookupResource;

    private EventBroker() { }

    public void FireLookupResource(object sender, EventArgs args)
    {
        Console.WriteLine("EventBroker::FireLookupResource");

        if (LookupResource != null)
           LookupResource(sender, args);
    }
}

public class ResourceBroker
{
    private static readonly ResourceBroker _current = new ResourceBroker();
    public static ResourceBroker Current { get { return _current; } }

    private ResourceBroker()
    {
        Console.Write("ResourceBroker::ResourceBroker");

        EventBroker.Current.LookupResource += EventBroker_LookupResource;
    }

    private static void EventBroker_LookupResource(object sender, EventArgs e)
    {
        Console.Write("ResourceBroker::EventBroker_LookupResource");
    }
}

However the output is not what I expected: the LookupResource event never gets called. That's understandable, since the ResourceBroker never gets referred in the executing code, it will not get instantiated. But what should I do to get the 'correct' output?

Creating a NoOp method in the ResourceBroker, and calling it in the Main function, works but it seems to me like an ugly hack. Am I missing something in the language keywords/features?

Thanks in advance

Luca

The Price of Freedom is Eternal Vigilance. -- Wing Commander IV

En Það Besta Sem Guð Hefur Skapað, Er Nýr Dagur.
(But the best thing God has created, is a New Day.)
-- Sigur Ròs - Viðrar vel til loftárása

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.