lundi 13 avril 2015

How to override base classes\structs such as int, string?

To reduce downvotes first: (Skippable)



I am aware that this question sounds pointless and\or weird. I am creating JIT that takes C# code compiles it with csc.exe, extracts the IL and parallize it into CUDA, and I want to override some of the things in C#.



How override base things such as int\ string? I tried:



class String : StackObject { /* In namespace System of course */
BasicString wrap_to;
public String( ) {
wrap_to = new BasicString( 32 ); // capacity
}
public String( int Count ) {
wrap_to = new BasicString( Count );
}
public String( BasicString wrap ) {
wrap_to = wrap;
}
public char this[ int index ] {
get {
return wrap_to[ index ];
}
set {
if ( wrap_to.Handlers != 1 ) {
wrap_to = new BasicString( wrap_to );
}
wrap_to[ index ] = value;
}
}
...
}
... // not in namespace System now
class Test {
public static void f(string s) {
}
}


But when I tried:



Test.f( new string( 16 ) );


It error'd Cannot implicitly convert type 'System.String' to 'string'. I tried moving my System.String to just string in the global scope and it error'd on the class itself. Any ideas how? I think somehow it could help if I can compile my .cs files without that mscorlib.dll, but I can't find a way to do it.






Aucun commentaire:

Enregistrer un commentaire