c#将var声明为接口.为什么这可能?

Dan*_*inu 2 c# interface

我无法真正理解这个概念.

假设我有这个界面:

    public interface IValidate 
    {
       Dictionary<eValidationErrors, List<string>> ValidationMessages { get; }
     }
Run Code Online (Sandbox Code Playgroud)

当我说:

          var Validator = control as IValidate;
          Validator.ValidationMessages.Add(key,list);
Run Code Online (Sandbox Code Playgroud)

什么是验证者?为什么我可以这样使用界面?

谢谢

Fre*_*els 5

Validator是实现IValidate接口的类型的实例(如果control实例未实现IValidate接口,则为null ).

如果您对某个实例的实际或精确实现不感兴趣,但是如果您想使用该界面提供的功能,那么这样做是有帮助的.

想想.NET框架本身的一些方法,它们接受一个接口类型的参数.该方法对类型本身不感兴趣; 它只需要确保传递的参数具有由指定接口声明的某些方法/属性/ etc ....