First of all, your code samples won't compile, but the idea is clear.
You cannot get what you want (and Solution 1 is totally unrelated to that), because this is not how inheritance work. The idea is not to fight against OOP, but to make it work for you. In your simple case, you just need to build class hierarchy suitable to your design. For example:
class MyVeryBase {
internal int prop1 { get; set; }
internal int prop2 { get; set; }
}
class class3 : MyVeryBase {
internal ulong prop6 { get; set; }
}
class class3 : MyVeryBase {
internal string prop3 { get; set; }
}
class MyVeryBase {
internal System.Text.StringBuilder prop4 { get; set; }
internal byte prop5 { get; set; }
internal char prop6 { get; set; }
}
If you really need to combine more that two classes (for example, to get
the same prop6
), you need something to provide
multiple inheritance (read about it). In .NET, you get only so called,
weak form of multiple inheritance, which you can get only for
interface. Read about them.
—SA