上下文的位編譯時檢查
我有一個類,它在「處理程序」,像這樣:
interface IHandler
{
void DoSomething(MyType type, string s);
}
public class MyType
{
private IHandler handler;
public MyType(IHandler handler = null)
{
this.handler = handler;
}
public void DoSomething(string s)
{
handler?.DoSomething(this, s);
}
}
問題
我要確保IHandler
中的所有方法都在MyType
中執行,而不需要第一個參數MyType type
,這將填充到我與this
處理程序調用。
我的問題
是否有允許這樣的事情的模式?我想從IHandler
繼承MyType
,但這需要調用者指定在調用中的類型,這打破了目的。我也可以確保它們都被手動調用,但接口將變得非常龐大,並且可能會有一些父接口。這是我最後的手段。如果需要的話,我並不介意更改代碼。
我這個
目標,我希望能夠在MyType
類添加行爲,同時允許處理器爲空(不添加行爲)。我選擇了這種模式,但我只是在計劃代碼,所以改變任何可以給我這些功能的東西都會很棒。
如果你把它改成'DoSomething的(字符串s)'然後當你實現它在'MyType'你不需要通過MyType的一個實例,因爲它是一個MyType? – juharr
@juharr由於IHandler可能處理多種類型的MyType,我需要知道它在'IHandler'方法中的哪一個! :) –
這聽起來像你可能會更好[泛型](https://msdn.microsoft.com/en-us/library/512aeb7t.aspx0)。我仍然不完全確定你想要達到的目標。 – RoadieRich