sma*_*man 9 c# dynamic-language-runtime dynamic c#-4.0
is运营商如何处理DLR?
为了使我的问题更加明确,请考虑以下签名:
public bool Is<T>(Func<dynamic> getInstance)
{
return getInstance() is T;
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,Is<T>返回需要什么条件true?此外,DLR是否提供任何机制来定制此行为?
在运行时,dynamic被视为相同object,这意味着getInstance委托的结果的运行时类型将用于执行此检查.dynamic这里使用的唯一区别是将不会进行编译时检查,并且将在运行时使用动态绑定对返回的动态对象执行此检查getInstance.
默认情况下,Is返回true需要什么条件?
传入的委托将需要返回一个在运行时与之兼容的类型T.
此外,DLR是否提供任何机制来定制此行为?
不会.这将使用C#类型的标准规则.任何自定义行为都需要写入逻辑本身.