如何在不使用partial关键字的情况下进行分组课程?

时间:2014-07-09 14:32:58

标签: c# .net class partial partial-classes

我在接受采访时被问到这个问题。如何重复此关键字的功能? (С#.NET)

编辑1:是的,我认为这是一个糟糕的问题,但知道能回答你们很有意思

编辑2:谢谢大家的回答,我明白了!

2 个答案:

答案 0 :(得分:2)

我认为 - 使用扩展程序

public class MyClass
{
    public Method1()
    {
    }
}

public static class MyClassExt
{
    public static Method2(this MyClass myClass)
    {
    }
}

MyClass mc = new MyClass();
mc.Method1();
mc.Method2();

答案 1 :(得分:0)

编写一个小脚本,在编译之前“连接”不同的文件。

这样的脚本可能如下:

#!/bin/bash
grep -P $2 "using .*" > $3
tac $1 | sed '0,/}/{s/}//}' | tac >> $3
grep -v -P ".*class.* {" < $2 >> $3

然后使用script File1.cs File2.cs ResultingFile.cs调用它(如果要支持名称空间,则应使用更高级的技术)。对于大多数IDE,您可以指定在编译之前应该执行的脚本。


另一种可能的方法是使用子类化。假设你有一个部分班Foo

<强> File1中

public partial class Foo {

    //methods part 1

}

<强>文件2

public partial class Foo {

    //methods part 2

}

要:

public abstract class FooBase {

    //methods part 1

}

public class RealFoo : FooBase {

    //methods part 2

}

然后,所有字段都应公开,您应该为第2部分的方法定义抽象签名,以便您可以调用它们。