"是"运算符如何与动态对象一起使用?

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是否提供任何机制来定制此行为?

Ree*_*sey 6

在运行时,dynamic被视为相同object,这意味着getInstance委托的结果的运行时类型将用于执行此检查.dynamic这里使用的唯一区别是将不会进行编译时检查,并且将在运行时使用动态绑定对返回的动态对象执行此检查getInstance.

默认情况下,Is返回true需要什么条件?

传入的委托将需要返回一个在运行时与之兼容的类型T.

此外,DLR是否提供任何机制来定制此行为?

不会.这将使用C#类型的标准规则.任何自定义行为都需要写入逻辑本身.