【问题标题】:Inconsistent accessibility: property type 'IProductRepository' could not be found可访问性不一致:找不到属性类型“IProductRepository”
【发布时间】:2018-02-10 22:19:47
【问题描述】:

错误:可访问性不一致:属性类型“IEnumerable 的可访问性低于属性“IProductRepository.Products”

namespace SportsStore.Domain.Abstract
{
    public interface IProductRepository
    {
        IEnumerable<Product> Products { get; }            
    }
}

我不明白错误消息的含义;有人可以帮我确定问题所在吗?

【问题讨论】:

  • 你的代码没有正确标记,所以真的很难看。
  • 您的代码不完整,但我敢打赌您的Product 课程是internal。显然,您不能在任何 public 类型中使用 internal 类(正如编译器所说)。
  • 这意味着您将一个类型暴露给一个无权访问该类型的范围。
  • 在您实现IProductRepository 接口的类中,您必须将Products 属性设为公开。

标签: c# asp.net visual-studio repository


【解决方案1】:

如果您有以下任何类定义:

class Product // defaults to internal

internal class Product

那么Product 类型在程序集之外是不可见的。如果你定义这个接口会有冲突:

public interface IProductRepository
{
    IEnumerable<Product> Products { get; }            
}

这表示接口是public,从程序集外部可见。但这是不可能的,因为它包含一个类型 - Product - not 在程序集外可见。这就像一家商店出售的产品不允许客户知道。这没有意义。

没有办法调和这种不一致,所以编译器不会构建它。

您可以将它们都设为internal 或同时设为public。您可以使接口internalProduct public。但是你不能创建接口publicProductinternal,因为它会产生冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多