在我的框架项目中,我有一个表示内容管理系统中的选项卡的类。在某些framewrok实现中,需要使用特定于该实现的选项卡的定义来扩展此类。我通过将CmsTabs类更改为部分来实现这一点,如下所示:
namespace Framework
{
/// <summary>
/// Class containing common CMS Tab names
/// </summary>
public static partial class CmsTab
{
/// <summary>
/// Information Tab
/// </summary>
public const string Information = "Information";
然后在实现框架的程序集中创建一个具有相同名称和命名空间的类。
但是,当我构建框架程序集时,CmsTabs类似乎不再是部分的 - 当我将部分类添加到实现程序集中时,它的成员将隐藏在实现程序集中。当在Reflector中反汇编时,我得到了这个:
public class CmsTab
{...
我是否需要采取措施使其保持部分状态,假设可以做我想做的事情。
感谢。
答案 0 :(得分:21)
您不能拥有部分类跨度程序集:
所有部分类型定义都意味着 必须是同一类型的部分 在同一个程序集中定义 相同的模块(.exe或.dll文件)。 部分定义不能跨越 多个模块。
答案 1 :(得分:7)
您可以使用Extension methods向其他程序集中的类添加新方法。
答案 2 :(得分:6)
部分类是纯粹的编译时功能 无法创建跨多个程序集的类定义。
相反,您可以使该类成为非静态单例,并允许实现继承该类,向其添加属性,并将继承的版本设置为单例实例。
如果它纯粹是const
字符串的集合,您可以将其设为private partial
类,但在每个项目中添加指向该文件的链接。