2014-01-22 50 views
1

我们都知道Singleton模式。C#如何实现“单身”的方法

如何实现一个单身“法”? - 一种仅被调用一次的方法,任何其他调用都不会执行任何操作。

我能想到的几种方法(包括懒惰 - 如果(.IsValueCreated){... value.method();}!),但你会如何实现它?

+0

-1我不明白你的问题是什么。 – TylerD87

+0

在该方法中检查是否等于某个“特定值”,并且只在工作完成后才执行该工作,如果是“某个值”,则在该方法中将其设置为“另一个值”,并确保该值不是在其他地方重新设置为“特定值” – DrCopyPaste

+0

让我们假设该方法来自您无法控制的外部API,但绝不能再次调用:) – Lior

回答

2

我不这么认为也有一些是像一个单身方法。

如果你想你的方法做执行的代码块只有一次,那么你可以做到这一点。这可以通过几种方式来完成,其中一人可能是如下 -

public class Foo 
    { 
     private static bool _isInitialied; 


     public void Initialize() 
     { 
     if(_isInitialied) 
      return; 
     //TODO: Initialization stups. 
     _isInitialied = true; 
     } 
    } 
+0

没有。我只是想看看有什么解决方案是人们可以想到的:) – Lior

+0

你是正确的 - 没有单身法.. – Lior

0

你可以做到这一点使用操作:

public class Test 
{ 
    private Action _action; 

    private void DoSomething() 
    { 
     // Do something interesting 
     _action = DoNothing; 
    } 

    private void DoNothing() 
    { 
    } 

    public Test() 
    { 
     _action = DoSomething; 
    } 

    public void Call() 
    { 
     _action(); 
    } 
} // eo class Test 
+0

..或与表达式..或与codedom! – Sinatr