No offence but there's a couple of code smells in there:
this.Blah = this.Blah.Resolve(...);
This line in particular would cause me to start the process of a rethink.
The main problems I'd have issues with are the object return type and the assignment of a Property to a value returned by calling a method on that property. These both smell like you've messed up the inheritance somewhere and ended up with a heavily stateful system, which is both a bugger to test and a pain to maintain.
Perhaps it would be better to rethink instead of trying to use hacks and tricks to sidestep this issue: I normally find that if I'm trying to abuse the language with a feature like Macros then my design needs work !
EDIT
Ok, so with added info perhaps this isn't so much of a smell, but I'd still suggest the following:
class ExampleExpr{
StatefulData data ... // some variables that contain the state data
BladhyBlah Blah { get; set; }
object Function(params) {
this.Blah = this.Blah.Resolve(params);
....
}
}
This code is worrying because it forces a fully state-based approach, the output depends on what has happened beforehand, and thus needs specific steps to replicate. This is a pain to test. Also, if you call Function() twice, there's no guarantee what will happen to Blah without knowing what state it was in in the first place.
class ExampleExpr{
StatefulData data ... // some variables that contain the state data
object Function(params) {
BlahdyBlah blah = BlahdyBlah.Resolve(params, statefulData);
}
}
if we use a factory-style method instead, returning a new instance with specific information whenever we are presented with a certain set of parameters, we have eliminated one place where stateful data is used (i.e. the BladhyBlah instance is now re-created on each call with a specific parameter set).
This means we can replicate any functionality in testing by simply calling Function(params) with a specific Setup() to create the statefulData and a specific set of params.
In theory this is less efficient (as a new BlahdyBlah is being created on each factory call) but it's possible to cache instances of BlahdyBlah with specific data and share them between factory calls (assuming they do not have other methods that effect their internal state). However, it's MUCH more maintanence-friendly and from a testing standpoint totally kicks stateful data's bum.
This also helps remove your original problem, as when we don't rely on an internal instance variable we can all Resolve(params, statefulData) externally from Function(params), and simply not call Function(params) if either blah == null or blah.SomeFlag == SomeFlag.Whatever. Thus, by moving this outside the method we no longer need to worry about the returns.
Hope that's somewhere in the right ballpark, it's hard to know exactly what to recommend given a small example, as is usually the case with difficult/abstract questions on here.