2015-09-27 114 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'簽名的方法都可以使用,不管它們是匿名還是命名都無所謂。 –