【发布时间】:2016-04-25 02:19:33
【问题描述】:
我想返回一个私有类类型的列表。假设这种情况:
class Article_GET
{
public class Article
{
public string name {get; set;}
public string description {get;set;}
}
}
现在我有另一个带有 Article 类的文件,在这个类中我有方法 GetArticles(),它创建一个访问 Article 类的 Article 列表,该类在 Article_GET 中可用。检查:
public static List<Article_GET.Article> GetArticles()
{
return new Article_GET().GetArticle(); //Method in Article_GET
}
调用Article_GET().GetArticle(); 的类Article 是一个dll 包装器。现在有一个问题。你怎么能看到class Article_GET 是私人的所以我收到了这个错误:
不一致的可访问性:返回类型 List List GET.List>比“List.GetList(字符串方法)”文章更难访问
'因为应该是public class Article_GET。但我希望这个类只能在 dll 程序集中内部使用。我尝试将 internal 放入,但同样的问题,我无法将 Article_GET.Article 的特定列表从私有/内部类返回到公共方法。
我该如何解决这个问题?
更新(建议使用新结构):
namespace MyCompany.Product.Article.GET.Article
{
internal class Article
{
public string name {get;set;}
public string description {get;set;}
}
class Article_GET
{
public class RootObject
{
public List<Article> article { get; set; }
}
public List<Article> GetArticle()
{
var obj = JsonConvert.DeserializeObject<RootObject>("json");
return obj.article;
}
}
}
和包装器:
namespace MyCompany.Product.Article
{
public class Article
{
public static List<GET.Article.Article> GetArticles()
{
return new Article_GET().GetArticle();
}
}
}
【问题讨论】:
-
您可以将内部类返回到同一程序集中的公共方法。您不能从公共类的公共方法返回它。所以你应该宁愿map that internal class to some public class 而是返回那个公共的。请发帖the actual code that fails - 这样可以避免我们进行大量猜测,并提高获得可靠答案的机会。
-
@EugenePodskal 如果我声明了
internal class Article_GET,我会在公共方法上获得不一致的可访问性。也许我误解了你的意思?我会看看你链接的例子。 -
我的意思是
GetArticles是公共类中的公共方法。而Article_GET.Article是一个内部类(它的外部“父”类是内部的)。然后您尝试从您的公共GetArticles方法返回Article_GET.Article。如果我没听错的话,您可能打算返回一些Article_PubliclyVisible.Article,这是一个完全独立于Article_GET.Article的公共类。 -
@EugenePodskal 好吧,现在很清楚,我会尝试修复演员转换,但显然不一致错误已消失
标签: c#