c# - How to restrict parameter types in generic methods -
say have 3 classes: a
,b
, c
. each of these class have getvalue()
method, returns int
. want create method:
int gettotalvalue<t,r>(t c1, r c2) { return c1.getvalue() + c2.getvalue() }
obviously, won't work. not parameter types have getvalue()
method. how restrict parameter types t
, r
, have have getvalue()
method (that returns int
)
have 3 implement interface contains getvalue
method , constrain method using types.
public interface igetvalue { int getvalue(); } public class : igetvalue // same b , c { ... }
then finally:
int gettotalvalue<t,r>(t c1, r c2) t : igetvalue, r : igetvalue { return c1.getvalue() + c2.getvalue(); }
update
as alex points out in him comment, method doesn't need generic though, can rewritten:
int gettotalvalue(igetvalue c1, igetvalue c2) { return c1.getvalue() + c2.getvalue(); }
Comments
Post a Comment