The better way, and my suggestion, is to use collaboration to achieve the code reuse you are after. For instance, and as shown in Rocky's implementation, when designing a class that implements ICloneable, instead of rewriting the same block of code, delegate to another class for the work (ObjectCloner). This can be done in many cases to give you the benefits of code reuse but, alas, not all. In these cases there are many other suggested approaches, as outlined in the other posts, that may help you achieve your goal. You will find that no one pattern fits across all cases, it is finding the right mix that will get you the farthest.
HTH