I need a parameter that implements multiple interfaces,How should the code be represented?

卡卡 1 Reputation point

interface IA
int DoA();
interface IB
int DoB();

These are two interfaces. My method needs to implement the parameters of both interfaces. Is there any way to restrict the caller?
I've thought about a lot of things That I can think of.
For example,

1: use the generic
int MyMethod<T>(T x)where T:IA,IB
It feels ok,but what is the point of generics for this method if the caller will always just treat the class as a parameter and never use the structure?

int MyMethod(IA x)
The IB temx = x (IB);
I don't think this is the best.
so is there a way for the compiler to restrict the caller?
(By the way, why are delegates designed as classes and not structs?)

An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.
8,980 questions
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Collin Brittain 36 Reputation points

    You could make a third interface IC that implements both interfaces and use it as your parameter.

    `interface IC : IA, IB


    public int MyMethod(IC myParameter)
         // Do something

    Now the methods and properties of both interfaces are available to you in the MyMethod method.

    0 comments No comments