问题标题看起来有点奇怪不是吗。无论如何。所以我有一个基类,它有一些私有字段,受保护的属性和一个构造函数,它接受一个参数,我有几个基类的子类。无论何时调用这些子类方法,都需要实例化子类,并且在执行完该方法后,对象将被销毁,因此如果再次调用该方法,则应该再次生成该类的实例。 (它是一个WCF服务)现在,我想要做的是以下内容。每当调用某个子类构造函数时,我都会使用某个特定参数显式调用基类构造函数(每个子类都不同,注意:没有子类方法是相同的),当调用基类构造函数时,我想根据需要检查一下到那个参数,如果它通过检查,那么我想允许执行子类方法。在任何其他情况下,我希望它不要运行子类方法。所以我想要这样的东西。当调用该方法时,必须构造子类,为此必须构造基类,如果基类的构造函数中的检查失败,我想阻止该方法运行。我可以只有一个bool属性并在基类的构造函数中设置它并在每个方法调用上检查它。但我想做一些更通用的东西。可能是我建议的方式也不对。所以你明白我想要的东西。任何建议都会受到批评。提前谢谢
class BaseClass
{
private bool _isValid;
private SomeService someService;
public BaseClass(SomeEnum value)
{
someService = new SomeService();
if (someService.Validate(value))
{
_isValid = true;
}
}
protected internal bool IsValid { get { return _isValid; } }
}
class SubClass : BaseClass
{
// object declaration
public SubClass () : base(SomeEnum.SomeValue)
{
// constructing some objects here
}
public Response Operation('parametereGoHere')
{
if (IsValid)
{
// perform operation. construct Response object and return it
}
}
// other methods omitted.
}
因此,每当调用Operation()
方法时,必须构造SubClass
,导致构造BaseClass
,基类设置_isValid
的值,然后用来检查有效性,但我想做一些更通用的东西。让我们不要只将_isValid
的值设置为true,而只是不执行任何操作或设置其他一些属性,如果Valiate()
失败,只需停止执行,不要执行任何操作。在这种情况下,如果我们以某种方式设法停止类的构造,则调用路由将无法调用Operation()
。如果不可能,我对我现在的解决方案非常满意。但如果是的话,我会很高兴看到这一点。注意:在每个子类中,方法都不同,我必须检查IsValid
以允许执行方法。
答案 0 :(得分:0)
您应该能够使用out
参数来使构造函数返回值。
答案 1 :(得分:0)
很难理解你想要的东西,但听起来你想要一个基础构造函数有时不做任何事情的情况。然后简单地创建一个不执行任何操作的基础构造函数,并调用它(使用: base()
调用)。如有必要,请使用伪参数。
class A {
public A() { a= 1; }
public A(double dummy); { }
}
class B
public B() : base() { // calls the base constructor that does something
}
public B(int) : base(1.0) {// class the base construct that does nothing
}
}