所以我想創建一個類型的擴展方法,該API另有密封。實例化擴展方法? C#
如果您瞭解擴展方法,以下內容應該看起來很熟悉。
private static List<Member> memberList = new List<Member>();
public static List<Member> GetMemberList(this GameObject go)
{
return memberList;
}
注意,聲明一個擴展方法,它需要是靜態的,並且因爲它需要是靜態的,那Im通過遊戲對象類型訪問該列表必須是靜態到。 我希望每個GameObject擁有自己的成員列表。然而,林相當肯定,因爲這是一個靜態字段,每個實例化的GameObject將指向相同的靜態memberList。
那麼我的假設是真的嗎?如果是這樣,有什麼可以替代?我想避免將GameObject放入一個包含memberList的包裝類中,因爲api只允許在運行時檢測和操作GameObjects。有許多方法可以通過gameObject反向引用包裝類,但是這給我想要避免的代碼增加了更多的複雜性。
您將在'GameObject'實例上調用'GetMemberList',它將返回該實例的列表。我不認爲我看到了問題。 (擴展方法是靜態的,並且必須聲明爲靜態類型,但「extended」參數是一個實例。) –
這是我的問題,如果這會發生。另外我只是從另一個網站上讀到這個「擴展方法是一種特殊的靜態方法,但是它們被稱爲是擴展類型的實例方法。」但是靜態memberList呢?它是一個從擴展方法訪問的靜態字段。 – MichaelTaylor3D
@DanJ:問題是成員列表不是遊戲對象的一部分。 – Guffa