C# instantiate generic type from method signature -


i've been fooling around generic methods lately , came across methods this:

public static void requires<texception>(bool condition, string message) texception : exception 

to understanding, when using above method provide type inherits exception , if condition false provided exception type thrown.

how work under hood?
texception instantiated throw new texception();?
, how can pass in message parameter if type unknown method (all knows inherits type exception)?

according msdn : system.exception have constructor takes string argument. string represents message.

with of activator-class can following pretty simple:

 using system;  public class test {     public static void requires<texception>(bool condition, string message)  texception : exception {     exception exception = (exception)activator.createinstance(typeof(texception),message);     throw exception; }    public static void main()   {       try       {           requires<argumentnullexception>(true,"test");       }       catch(exception e)       {           console.writeline(e);       }     } } 

working example: http://ideone.com/behyuo


Comments

Popular posts from this blog

c - Bitwise operation with (signed) enum value -

xslt - Unnest parent nodes by child node -

YouTubePlayerFragment cannot be cast to android.support.v4.app.Fragment -