If I'm reading the pattern in the classes correctly, wouldn't something as simple as this do?
Or you could even pub p into a separate interface & inherit it in B,C,D...
public interface IA
{
int x { get; set; }
int y { get; set; }
int z { get; set; }
int F1();
}
public interface IB
{
int p { get; set; }
int F2();
}
public interface IC
{
int p { get; set; }
int F3();
}
public interface ID
{
int p { get; set; }
int F4();
}
public class A : IA
{
public int x { get; set; }
public int y { get; set; }
public int z { get; set; }
public int F1()
{
return 0;
}
}
public class B : IA, IB
{
public int x { get; set; }
public int y { get; set; }
public int z { get; set; }
public int p { get; set; }
public int F1()
{
return 0;
}
public int F2()
{
return 0;
}
}
public class C : IA, IC
{
public int x { get; set; }
public int y { get; set; }
public int z { get; set; }
public int p { get; set; }
public int F1()
{
return 0;
}
public int F3()
{
return 0;
}
}
public class D : IA, ID
{
public int x { get; set; }
public int y { get; set; }
public int z { get; set; }
public int p { get; set; }
public int F1()
{
return 0;
}
public int F4()
{
return 0;
}
}