luca345
asked on
DirectCast very very difficoult question
Hi ,
I need a particular request.
In my project there are more then 150/200 calls to DirectCast.
I see that in C# there is an equivalent, but use a very different sintax.
In short:
I like to create a function that emulate DirectCast with another name:
My_DirectCast that inside use direct cast. To explain better the concept, something like this:
//
Public Function My_DirectCast(Expression , Type) as Object
return DirectCast(Expression , Type)
End Function
//
and IT is not easy do this, because the compiler do not accept Type.
But after this I need a way to emulate the some situation in C#
//
Object My_DirectCast(Expression , Type)) {
Return (Type)Exression;
}
//
and probably this is more difficoult then the previous.
I am aware that it is not easy but I hope is possible do this.
If is possible do this I don't need to replace MANUALLY 150/200 or more code rows but only one.
Please HELP ME !!!!!
I need a particular request.
In my project there are more then 150/200 calls to DirectCast.
I see that in C# there is an equivalent, but use a very different sintax.
In short:
I like to create a function that emulate DirectCast with another name:
My_DirectCast that inside use direct cast. To explain better the concept, something like this:
//
Public Function My_DirectCast(Expression , Type) as Object
return DirectCast(Expression , Type)
End Function
//
and IT is not easy do this, because the compiler do not accept Type.
But after this I need a way to emulate the some situation in C#
//
Object My_DirectCast(Expression , Type)) {
Return (Type)Exression;
}
//
and probably this is more difficoult then the previous.
I am aware that it is not easy but I hope is possible do this.
If is possible do this I don't need to replace MANUALLY 150/200 or more code rows but only one.
Please HELP ME !!!!!
ASKER
Hi AndyAinscow ,
Because I have a bit difficoult to understand C# can you try to do the some in VB.net ?
Thank you !!
Because I have a bit difficoult to understand C# can you try to do the some in VB.net ?
Thank you !!
I thought you wanted it in C# because you gave an example in VB but said C# uses different syntax
VB isn't my speciality.
I've done a quick bit of searching and found this:
Public Shared Function CAnyType(Of T)(ByRef UTO As Object) As T
Return CType(UTO, T)
End Function
I think you call it with something like
d = CAnyType(of double)(3.14159)
i = CAnyType(of integer)(2.345)
CType should be similar to your DirectCast, I think this might work or at least get you started
I've done a quick bit of searching and found this:
Public Shared Function CAnyType(Of T)(ByRef UTO As Object) As T
Return CType(UTO, T)
End Function
I think you call it with something like
d = CAnyType(of double)(3.14159)
i = CAnyType(of integer)(2.345)
CType should be similar to your DirectCast, I think this might work or at least get you started
ASKER
Hi Andy ,
Not work, I have try a similar code but VB don't accepts the 2° parameter because is a Type and VB want a object or class.
Not work, I have try a similar code but VB don't accepts the 2° parameter because is a Type and VB want a object or class.
Works perfectly here - see picture
0002.jpg
0002.jpg
ASKER
Hi Andy ,
Thank you for your code but the the problem is more hard.
Please see attach.
I need a function that accept the some arguments of the original directcast and return the some value.
directr-cast.png
Thank you for your code but the the problem is more hard.
Please see attach.
I need a function that accept the some arguments of the original directcast and return the some value.
directr-cast.png
There are always two (rather silly) other possibilities
1)
Function CastToDouble(1.23) as Double and so on for int, string....
2)
Function Cast(obj, string) as object which has a big switch statement to call the appropriate DirectCast based upon the string value
1)
Function CastToDouble(1.23) as Double and so on for int, string....
2)
Function Cast(obj, string) as object which has a big switch statement to call the appropriate DirectCast based upon the string value
ASKER
Hi ,
I explain better what I need:
I my project there are 100/150 calls to DirectCast.
In my compiler I need to go to 'replace' and 'all' 'DirectCast' with 'MyDirectCast' .
In your code I can't do 'replace all' because the arguments are different:
1) Is different the order.
2) You have add 'of'.
In short I need a clone of DirectCast with identical arguments::
//
a = DirectCast(b , c)
a = CAnyType(b , c )
//
In this mode, what I replace 'DirectCast' with ' CAnyType' I don't need to change others.
I don't known if this is possible or not.
I explain better what I need:
I my project there are 100/150 calls to DirectCast.
In my compiler I need to go to 'replace' and 'all' 'DirectCast' with 'MyDirectCast' .
In your code I can't do 'replace all' because the arguments are different:
1) Is different the order.
2) You have add 'of'.
In short I need a clone of DirectCast with identical arguments::
//
a = DirectCast(b , c)
a = CAnyType(b , c )
//
In this mode, what I replace 'DirectCast' with ' CAnyType' I don't need to change others.
I don't known if this is possible or not.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Very good !
public T foo<T>(Object obj)
{
return (T) Convert.ChangeType(obj, typeof(T));
}
private void Form1_Load(object sender, EventArgs e)
{
int i = foo<int>(23.45);
double d = foo<double>(3.14159);
}