Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么接口检查失败?_C# - Fatal编程技术网

C# 为什么接口检查失败?

C# 为什么接口检查失败?,c#,C#,我有一个实现接口的类。在代码的另一个区域中,我检查该类实例是否包含该接口,但它不起作用。查看类是否包含接口的检查在应该为true时总是失败(false) 下面是我试图完成的一个简单的表示 范例 public interface IModel { bool validate(); } public class SomeModel : IModel { public SomeModel { }

我有一个实现接口的类。在代码的另一个区域中,我检查该类实例是否包含该接口,但它不起作用。查看类是否包含接口的检查在应该为true时总是失败(false)

下面是我试图完成的一个简单的表示

范例

  public interface IModel
    {
        bool validate();
    }


  public class SomeModel : IModel
    {
        public SomeModel
        {
        }

        public bool Validate()
        {
            return true;
        }        
    }



    // Dummy method
    public void Run()
    {
        SomeModel model = new SomeModel();

        if (model is IModel)
        {
           string message = "It worked";
        }
        else
        {
            string message = "It failed";
        }
    }

Validate在接口中以小写形式编写,在类中以大写形式编写。您的示例甚至不应该编译,因为这是一个编译器错误。

您是否确保针对正确的接口进行了测试?我的意思是,您的“is”测试是否使用了正确版本的IModel?IModel并不是唯一的类型名,所以您可能导入了不正确的命名空间

尝试明确限定您的支票

这里一个非常常见的错误是在两个不同的程序集中声明接口,例如在两个不同的DLL中包含相同的
.cs
文件。由于类型是由它们的程序集定义的,因此会产生两个冲突的接口,它们恰好具有相同的名称


同样的场景也很常见(使用不同的名称空间),例如在导入web服务时;代理/生成的类型与原始类型不同。

我认为您的接口定义中有一个输入错误。验证应大写。给定的示例包含一些输入错误更正。你能给我们一个更完整的例子,说明你的代码中出现了什么问题吗?我无法用你的例子再现你的错误。请发布一个例子来说明错误。这个例子只是为了帮助解释问题。这不是一个有效的例子。该死,这就是它。我在项目的不同部分有两个界面副本,一个引用一个,另一个引用另一个。我想subversion在最近的更新中把它带回来了。。。
   if (model is MyNamespace.IModel) ...