2015-09-27 111 views
0

我有一个类名“游戏”:(对于一些背景,这个类定义了游戏启动游戏)分配一个函数的类成员

public class Game 
{ 
    private string Name; 
    public Game(string name) 
    { 
     Name = name; 
    } 

    public void Install() 
    { 
      //Insert For Each Member 
    } 
} 

什么我希望能够做的是为每个班级成员分配函数Install() individualy。

Game game1 = new Game(1, "dfsdf"); 
game1.Install= {/*Insert Code Here*/}; 

有没有办法在C#这样做吗?

(原谅我,如果这就是所谓的在C#中的“法”,我真的不知道)

这样做的目的是为了能够分配一个不同的安装过程,每场比赛。

+3

'public Action Install {get;组; }' –

+0

我认为这是不可能的。你所能做的只是实现一个抽象方法Install,然后从Game继承并实现这个方法。所有这些当然不是在运行时。 –

+0

您是否考虑过[策略设计模式](https://en.wikipedia.org/wiki/Strategy_pattern)? –

回答

2

这并不完全清楚你要在这里完成什么,但你可以做的是使Install属于Action类型的属性,然后为它分配一个匿名方法。

例如:

public class Foo 
{ 
    public Action Install {get; set; } 
} 

var x = new Foo(); 
x.Install =() => { 
    // Whatever logic you'd like 
}; 

更常见的方法是创建一个抽象基类与一个抽象方法,然后实现提供用于该方法具体实现特定亚型。

+0

任何符合'Action'签名的方法都可以使用,不管它们是匿名还是命名都无所谓。 –