5

每隔一段时间,我就完成了一段代码的修改,我想“锁定”或将代码区域设为“只读”。这样,我可以修改代码的唯一方法是先解锁它。有没有办法做到这一点?

4

6 回答 6

5

在许多情况下,最简单的方法是使其成为部分类型- 即其源代码分布在多个文件中的单个类。然后,您可以使一个文件只读而另一个可写。

要声明部分类型,只需partial在声明中使用 contextual 关键字:

// MyClass.First.cs:
public partial class MyClass
{
    void Foo()
    {
        Bar();
    }

    void Baz()
    {
    }
}

// MyClass.Second.cs:
public partial class MyClass
{
    void Bar()
    {
        Baz();
    }
}

正如你所看到的,它最终就像源都在同一个文件中一样——你可以毫无问题地从另一个文件中调用在一个文件中声明的方法。

于 2009-01-25T19:48:35.167 回答
2

将其编译成库 dll,供其他项目参考。

于 2009-01-25T20:24:38.153 回答
1

将代码拆分为单独的文件,然后检查到源代码控制系统?

于 2009-01-25T19:47:23.533 回答
1

鉴于您对部分课程的反驳......我无法在单个文件中知道,缺少文档。其他选择?

  • 遗产; 但是基类中的受保护代码(在您控制的程序集中);继承者只能调用public/protected成员
  • postsharp - 将受保护的逻辑粘贴在外部声明的属性中

但是,这两个仍然需要多个文件(可能还有多个程序集)。

于 2009-01-25T20:25:50.053 回答
0

如果您使用的是版本控制系统,这完全没有必要。因为一旦您将其签入,无论您编辑代码的哪一部分,您都可以随时进行差异化或回滚。哎呀,您可能会不小心清除了所有源代码,但仍然可以将其取回。

由于您想锁定代码的某些部分,我得到了一种非常糟糕的“代码气味”。我猜也许你在一个类中做的太多了,在这种情况下,将它重构为一组适当的类。事实上,在视觉工作室已经存在 10 多年之后,此功能不可用,这应该表明您这样做的愿望可能是设计不佳的结果。

于 2009-03-08T21:37:02.007 回答
0

我考虑过这一点,但我更愿意将课程保存在一个文件中。– 丹明

对不起,麦克。作为 SVN 预提交的一点巫术可能会抓住它,但除此之外没有其他解决方案
// 如果您更改此代码,您将被解雇

于 2009-01-25T20:18:34.607 回答