我在接受采访时被问到这个问题。如何重复此关键字的功能? (С#.NET)
编辑1:是的,我认为这是一个糟糕的问题,但知道能回答你们很有意思
编辑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部分的方法定义抽象签名,以便您可以调用它们。