Here's one example of doing this but there lots of options...only one table it needed here:
Code:
public abstract class Item{
public void MyMethod(){
//do stuff
}
}
public class MyItem:Item{
Item inner;
public MyItem(Item inner){
this.inner = inner;
}
public override void MyMethod(){
inner.MyMethod();
}
}
public class JoesItem:Item{
Item inner;
public JoesItem(Item inner){
this.inner = inner;
}
public override void MyMethod(){
inner.MyMethod();
}
}
ItemTable
=========================================
Id | TypeCode | fk_innerItem_id
1 Base null
2 My 1
3 Joes 1