Yip*_*Yay 2 c# fallback arguments overloading
有可能以某种方式实现以下方案:
public interface ISomething
{
void Go(ISpecific specific);
void Go(Object o);
}
Run Code Online (Sandbox Code Playgroud)
让每个Go(ISpecific)拨打第一个重载会被调用,与其他任何可能的对象调用的类将回退到的Go(Object)实施?
这是默认情况下的工作方式 - 但使用编译时类型.如果你有Go(foo)和编译时类型foo没有实现ISpecific,它将调用第二个方法,即使foo在执行时引用的对象实现ISpecific.如果你想在执行时动态做出这个决定,如果你正在使用C#4,你可以写:
dynamic value = GetValue();
something.Go(value);
Run Code Online (Sandbox Code Playgroud)
......并且在执行时,将选择正确的过载.