鉴于这种情况:
public const string _constantString_Kind1 = "a constant string";
public const string _constantString_Kind2 = "other constant string";
[SomeSealedAttribute(_constantString_Kind1)]
public static int A_Kind1(); // this was just A()
[SomeSealedAttribute(_constantString_Kind2)]
public static int A_Kind2(); // this was just A() as well,
// doing the same thing
public int CallA () {
return B.SomeRuntimeBooleanFlag ? A_Kind1() : A_Kind2();
}
有没有办法避免这些:
A_*
。这似乎可以在元级别使用T4模板或使用Relefection,但我更喜欢避免这些。
在这种情况下,我可以遵循一些更好的模式来练习DRY吗?
答案 0 :(得分:0)
不确定为什么需要这两个属性,但由于这两种方法的含义不同,因此代码中应该有两种方法。为了尊重DRY,您可以将这两种方法重构为私有方法。
但是可以肯定的是,这段代码有一种气味,但这可能与使用的框架有关(为什么你首先需要那些属性?)