【发布时间】:2016-06-30 11:30:23
【问题描述】:
我目前的主题是代码共享。建议使用访问修饰符internal 在多个文件之间共享代码是可能的。但是是吗?还是我弄错了?我无法发布链接,因为并非所有人都可以访问源代码。
是否可以在一个文件中定义类(如接口或抽象类)并在另一个文件中实现它(并在此处使用internal)?
这是一些伪代码(显然不起作用)。定义在一个文件中:
internal static class SongLoader
{
internal async static Task<IEnumerable<Song>> Load();
internal async static Task<Stream> OpenData();
}
在另一个文件中实现:
internal static class SongLoader
{
internal const string Filename = "songs.json";
internal static async Task<IEnumerable<Song>> Load()
{
// implementation
}
internal static Stream OpenData()
{
// implemenation
}
}
或者是否可以在一个文件中定义Load(),在另一个文件中定义OpenData(),同时使用internal 访问修饰符?这可能吗?怎么样?
【问题讨论】:
-
在同一程序集中的文件中:msdn.microsoft.com/en-us/library/7c5ka91b.aspx
-
@Stanley:是的,它应该在同一个程序集中,因为它被编译到同一个项目中(参见Shared Projects)。
-
internal只是一个可见性修饰符。它与将一个类拆分为多个文件无关。其关键字是partial。但是没有你所描述的“类的定义”这样的东西。最接近的是“部分方法”,但它们必须返回void并且它们始终是私有方法。 -
@Dennis_E:我提到的网站上说
partial是类镜像的一种变体(使用internal) ...我也相信在我的示例中,只有partial是可能的。
标签: c# access-modifiers code-sharing