Question: Is there a way to use inherited methods with a same name from few classes, but without casting?

```
public class A {
     someMethod(A a) {}
}
public class B {
     someMethod(B b) {}
}
public class Client : A, B {
     public Client() {
          someMethod(new A());
          someMethod(new B());
     }
}

```

Answer: 
You can achieve this with explicit interface implementation and composition:

```
public interface IA {
     someMethod(A a) {}
}
public interface IB {
     someMethod(A a) {}
}
public class A : IA {
    someMethod(B b) {}
}
public class B : IB {
    someMethod(B b) {}
}
public class Client : IA, IB {
    public Client() {
        ((IA)this).someMethod(new A());
        ((IB)this).someMethod(new B());
     }
     IA.someMethod(new A());
     IB.someMethod(new B());
}

```
There are some non-language tools for this sort of thing. Check out [PostSharp](http://www.postsharp.net/).