0
我有一個BaseImageView(平臺在這裏無關緊要),它有一個屬性Effect
,這是一個command對象。爲什麼我不能將此方法標記爲靜態?
我想我所有的命令都實現了IImageEffect
,它有一個static
方法ApplyEffect
,拍攝圖像並返回圖像的效果。
但編譯器抱怨我無法將接口方法標記爲static
,但這看起來像邏輯選項(因爲沒有效果所需的狀態信息)。
我問這個,因爲我需要100名效果對象1日起適用於100幅不同的圖像,而我可以逃脫傳遞類,並調用靜態方法,這將廢除了100個實例。
有沒有一種方法我可以有一個靜態接口,或者我可以傳遞一個類,並讓它調用該類型的靜態ApplyEffect
?
不行,接口成員不能是靜態的。如果您稱爲「IImageEffect.ApplyEffect」,CLR如何知道您想要調用哪個實現? (有與泛型類型參數的靜態接口成員的說法,但這是更加微妙。) –
@JonSkeet我會通過一個類來了'Effect'屬性,然後調用'ApplyEffect'這個類的,所以它會成爲'EffectClass .ApplyEffect'。然後它會知道我想調用它的具體課程。 – vrwim
對不起,如果沒有問題*中的具體示例*,這很難理解。如果你只是想要一個總是做同樣事情的靜態方法,就把它放在一個類中而不是一個接口中...... –