Well, firstly, yes you do need to use the partial keyword to all of the involved classes, under the same namespace. This will tell the compiler that those are the parts of the same class that will be put together.
Now, if you really cannot change the old classes, one thing you can do is to inherit your old class:
public class NewClass : OldClass
...and as such you can extend the functionality of the OldClass.
You may also choose to just consume the old class some sort of wrapper, as an attribute/property:
public class NewClass
{
public OldClass MyClass { get; set; } //.NET 3.5 / VS2008
private OldClass _oldClass; //.NET 2.0 / VS2005
public OldClass MyClass
{
get { return _oldClass; }
set { _oldClass = value; }
}
}
...or even a generic:
public class NewClass<T> where T: OldClass //applicable in both versions
The suggestion for extension methods will also work:
public void NewMethod1(this OldClass, string someParameter){} //available only in .NET 3.5/VS2008