1

我不知道这是否有可能,但我试图得到的是强制从某个基类继承的开发人员在这个类的每个方法中实现一个特定的参数。

就像是:

class SomeClass : BaseClass
{
     public void SomeMethod(bool iAmAForcedParameter = false)
     {

     }
}

这样做的原因是我们有可以从 MVC 项目(这是我们的前端)调用的服务,也可以从其他服务中使用。如果将从前端调用服务,则应在完成所有操作后将更改写入数据库。如果该服务被另一个服务使用,它应该只进行更改(在内存中)而不是将它们写入数据库。

我的另一个想法是确定谁是调用者,如果他来自特定类型,则该方法不应发送数据。但是,我不知道如何做到这一点,或者这是否可能在没有巨大性能影响的情况下实现。

问候并感谢您提前提供的帮助。

4

3 回答 3

1

在这个类的每个方法中实现一个特定的参数。

我认为你只是在类上寻找一个属性,然后你可以检查每个方法。

于 2013-02-28T09:14:30.077 回答
1

奇怪的是,您的每个方法都有两个职责。我宁愿创建两个派生类。一种具有将数据持久保存到数据库的方法,另一种则不:

class SomeInMemoryClass : BaseClass
{
   public override void SomeMethod() {}
}

class SomeSqlClass : BaseClass
{
   public override void SomeMethod() {}
}

无论如何 - 将布尔值传递给方法是一种设计气味。它告诉你的方法做了两件事。最好有两种方法,告诉调用者他们在做什么:

void SomeInMemoryMethod()
void SomeSqlMethod()

你不认为它更易于维护吗?

void SomeMethod(false)

对于您的最后一次编辑:将对象传递SomeInMemoryClass给不应将数据保存到数据库的类型。其他类型应该使用SomeSqlClass实例。

于 2013-02-28T09:15:26.250 回答
0

我也不明白第二部分。

对于第一项,只需使用

public void SomeMethod(bool iAmAForcedParameter)

所以没有可选参数。

如果您想使用可选参数,请使用

public void SomeMethod(bool iAmAForcedParameter)
{
    SomeMethodX(iAmAForcedParameter)
}

public void SomeMethodX((bool iAmAForcedParameter = false)
于 2013-02-28T09:18:43.460 回答