package Ġio . v rap . codegen . languages . csharp . extensions Ċ Ċ import Ġio . v rap . rm f . codegen . types .* Ċ import Ġio . v rap . rm f . r aml . model . util . String Case Format Ċ import Ġcom . hy pert ino . inf lect or . English Ċ Ċ fun ĠV rap Type . simple Name (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠV rap Scalar Type Ġ-> Ġthis . scalar Type ĊĠĠĠĠĠĠĠ Ġis ĠV rap DateTime Type Ġ-> Ġthis . simple ClassName ĊĠĠĠĠĠĠĠ Ġis ĠV rap Enum Type Ġ-> Ġthis . simple ClassName ĊĠĠĠĠĠĠĠ Ġis ĠV rap ObjectType Ġ-> Ġif ( this . simple ClassName Ġ== Ġ" DateTime " Ġ|| Ġthis . simple ClassName Ġ== Ġ" Object ") Ġthis . simple ClassName Ġelse Ġ" I ${ this . simple ClassName }" ĊĠĠĠĠĠĠĠ Ġis ĠV rap Any Type Ġ-> Ġthis . base Type ĊĠĠĠĠĠĠĠ Ġis ĠV rap ArrayType Ġ-> Ġ""" List \< ${ this . item Type . simple Name () }\ > """ ĊĠĠĠĠĠĠĠ Ġis ĠV rap Nil Type Ġ-> Ġthrow ĠIllegalStateException ("$ this Ġhas Ġno Ġsimple Ġclass Ġname .") Ġas ĠThrowable ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠV rap Type . to C sharp V Type (): ĠV rap Type Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠV rap ObjectType Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV rap ObjectType (` package ` Ġ= Ġthis .` package `. to C sharp Package (), Ġsimple ClassName Ġ= Ġthis . simple ClassName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠV rap Enum Type Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV rap Enum Type (` package ` Ġ= Ġthis .` package `. to C sharp Package (), Ġsimple ClassName Ġ= Ġthis . simple ClassName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠV rap ArrayType Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV rap ArrayType ( this . item Type . to C sharp V Type ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠV rap Type . csharp Package (): ĠString Ġ{ ĊĠĠĠ Ġvar ĠpackageName Ġ= Ġ"" ĊĠĠĠ Ġif Ġ( this Ġis ĠV rap ObjectType ) ĠpackageName Ġ= Ġthis .` package ` ĊĠĠĠ Ġelse Ġif Ġ( this Ġis ĠV rap Enum Type ) ĠpackageName Ġ= Ġthis .` package ` ĊĊĠĠĠ Ġif (! packageName . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠ ĠpackageName Ġ= ĠpackageName . to C sharp Package () ĊĠĠĠ Ġreturn ĠpackageName Ċ } Ċ // need Ġrefactor Ċ fun ĠV rap Type . request Builders Package ( resourceName Pl ural : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġc Package Ġ= Ġthis . csharp Package (). replace (" Clients "," Client ") ĊĠĠĠ Ġreturn Ġ"$ c Package . Request Builders .$ resourceName Pl ural " Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġpackage Ġ" com merc et ools . API / models / Order " Ġas Ġc sharp Ġnamespace , Ġexample Ġ" com merc et ools . API . Models . Orders " Ċ Ġ* ĠDon 't Ġapp ply Ġcamel Case Ġto Ġcom merc et ools Ċ Ġ*/ Ċ fun ĠString . to C sharp Package (): String { ĊĠĠĠ Ġif (! this . contains ("/ ")) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġvar Ġpackage As List Ġ= Ġthis . split ("/") ĊĠĠĠ Ġvar Ġfirst Ġ= Ġpackage As List . first () ĊĠĠĠ Ġvar Ġdomain Type As Pl ural Ġ= Ġpackage As List . last (). singular ize (). plural ize () ĊĠĠĠ Ġpackage As List Ġ= Ġpackage As List . drop Last ( 1 ). plus ( domain Type As Pl ural ) ĊĊĠĠĠ Ġreturn Ġpackage As List . take Last ( max Of ( package As List . size , Ġ 1 )). join ToString (".") ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġs Ġ-> Ġif ( s Ġ== Ġfirst ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn @ join ToString Ġs ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġreturn @ join ToString ĠString Case Format . UPPER _ C AME L _ CASE . apply ( s ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġphysical Ġpath Ġof Ġthe Ġfile Ġshould Ġbe Ġgenerated Ġlike Ġ" com merc et ools / API / models / Orders / Order Draft . cs " Ċ Ġ*/ Ċ fun ĠV rap Type . csharp Class RelativePath ( is Interface : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġrelative Path Ġ= Ġ""; ĊĠĠĠ Ġvar ĠpackageName Ġ= Ġ""; ĊĠĠĠ Ġvar Ġsimple ClassName Ġ= Ġ"" ĊĊĠĠĠ Ġif Ġ( this Ġis ĠV rap ObjectType ) Ġ{ ĊĠĠĠĠĠĠĠ ĠpackageName Ġ= Ġthis .` package ` ĊĠĠĠĠĠĠĠ Ġsimple ClassName Ġ= Ġthis . simple ClassName ĊĠĠĠ Ġ} Ġelse Ġif Ġ( this Ġis ĠV rap Enum Type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠpackageName Ġ= Ġthis .` package ` ĊĠĠĠĠĠĠĠ Ġsimple ClassName Ġ= Ġthis . simple ClassName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġnamespace Dir Ġ= ĠpackageName . to Namespace Dir () ĊĠĠĠ Ġvar ĠfileName Ġ= Ġif ( is Interface ) Ġ" I ${ simple ClassName }" Ġelse Ġsimple ClassName ĊĊĠĠĠ Ġrelative Path Ġ= Ġ"${ namespace Dir }.${ fileName }". replace (".", Ġ"/") Ġ+ Ġ". cs " ĊĊĠĠĠ Ġreturn Ġrelative Path Ċ } Ċ Ċ /** Ċ Ġ* ĠPackage Ġexample Ġ" com merc et ools . API / models / Order " Ċ Ġ* ĠReturns Ġphysical Ġpath Ġof Ġthe Ġfile Ġshould Ġbe Ġgenerated Ġlike Ġ" com merc et ools / API / Models / Orders " Ċ Ġ*/ Ċ fun ĠString . to Namespace Dir (): String { ĊĠĠĠ Ġif (! this . contains ("/ ")) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĊĠĠĠ Ġvar Ġpackage As List Ġ= Ġthis . split ("/") ĊĠĠĠ Ġvar Ġdomain Type As Pl ural Ġ= Ġpackage As List . last (). singular ize (). plural ize () ĊĠĠĠ Ġpackage As List Ġ= Ġpackage As List . drop Last ( 1 ). plus ( domain Type As Pl ural ) ĊĠĠĠ Ġreturn Ġpackage As List . join ToString ("/") Ġ{ Ġs Ġ-> ĠString Case Format . UPPER _ C AME L _ CASE . apply ( s ) Ġ}. lower Camel Case () Ċ } Ċ Ċ fun ĠString . plural ize (): ĠString Ġ{ ĊĠĠĠ Ġval Ġtypes To Excluded Ġ= ĠarrayOf < String >(" common ", Ġ" me ", Ġ" graphql ") ĊĠĠĠ Ġif ( types To Excluded . contains ( this . toLowerCase ())) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠ Ġreturn Ġreturn ĠEnglish . plural ( this ) Ċ } Ċ Ċ fun ĠString . singular ize (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠEnglish . singular ( this ) Ċ } Ċ Ċ fun ĠV rap Type . is ValueType (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġ( this Ġis ĠV rap Scalar Type ) Ġ&& Ġthis . scalar Type ! =" string " Ċ } Ċ