在C#中更改方法在运行时返回的内容

时间:2014-03-25 11:47:36

标签: c# methods boolean return

有没有办法让这个方法在运行时在某种条件下返回true?快速说明:我想知道的是,这是否可能。相信我,编写方法的其他方法不会有帮助。

public bool Example()
{
    return false;         
}

if(//Certain condition is satisfied)
{
    //Example method returns true instead
}

4 个答案:

答案 0 :(得分:3)

是。我偶尔也要这样做。这就是我的所作所为:

  • 在启动之前将CLR探查器附加到进程。
  • 设置要在Example jitted时回叫的探查器。
  • 使用我选择的代码进行IL注入以替换其内容。

现在我控制方法是返回true还是false。

答案 1 :(得分:2)

这样的东西?

public bool Example()
{
    if(//Certain condition is satisfied)
    {
        return true;
    }

    return false;         
}
  

相信我,编写方法的其他方法不会有帮助。

我不同意见。也许如果您解释实际问题,而不是您尝试的解决方案,可以给出更准确的答案。

答案 2 :(得分:0)

public bool Example()
{
 return Certaincondition;         
}

答案 3 :(得分:0)

在不知情的情况下,为什么不创建一个接口和两个实现(一个返回true的实现和一个返回false的实现);并根据你的if语句使用正确的实现?

 public interface IMyInterface
 {
     public bool MyMethod();
 }

 public class Impl1 : IMyInterface
 {
     public bool MyMethod()
     {
          return true;
     }
 }

 public class Impl2 : IMyInterface
 {
     public bool MyMethod()
     {
          return false;
     }
 }

 // in your logic somewhere
 if(//Certain condition is satisfied)
 {
     new Impl1().MyMethod();
 } else 
 {
     new Impl2().MyMethod();
 }