更改重写方法中的默认代码段
本文关键字:默认 代码 重写 方法 | 更新日期: 2023-09-27 18:00:25
请帮帮我!我可以以某种方式自定义默认情况下显示在重写方法体中的自动生成的代码片段吗?
默认情况下,重写的方法看起来像
public override void Method(int A, object B)
{
base.Method(A, B);
}
我想用我自己的代码片段替换默认的代码片段,例如
public override void Method(int A, object B)
{
if (A > 0)
{
// some code..
}
else
{
// some code..
}
}
编辑
我有基本类
public class BaseClass
{
public int Result {get;set;}
// This method depends on result
protected virtual void Method() {}
}
有很多类是从BaseClass派生而来的。所有这些都必须以相同的方式处理Method()中的Result属性。所以,我想放置一些代码,维奇展示如何使用它。根据我的想法,当我在智能列表中键入"override"并选择"Method()"时,我会得到以下代码:
public class DerivedClass: BaseClass
{
public override void Method()
{
// u have to check result property
if(result > 0)
{
// if result is positive do some logic
}
}
}
而不是默认的代码段
public class DerivedClass: BaseClass
{
public override void Method()
{
base.Method();
}
}
最终
对于这种情况,使用模板方法模式是个好主意。
感谢大家分享你们的想法!
在visual studio中的代码段管理器中,您可以修改MethodOverrideStub.snippet
在代码片段中使用参数的地方获得你想要的行为可能会很棘手——我目前正在研究,但没有明显的结果。
然而,仅仅插入带有一些模板区域的if/else应该不会太难。
好吧,依靠代码片段让人们正确地编写方法不是一个好主意。如果你想让这个方法总是有这样的结构,你最好使用模板方法模式:
public abstract class BaseClass
{
// this method forces that structure upon the subclasses
public void Foo()
{
if(result > 0)
{
DoFoo();
}
}
// this is the method that subclasses override
protected abstract void DoFoo();
}
public class DerivedClass : BaseClass
{
public override DoFoo()
{
// now you write the code here
}
}