上下文的位编译时检查
我有一个类,它在“处理程序”,像这样:
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