How to Cast to Generic Parameter in C#? -


i'm trying write generic method fetching xelement value in strongly-typed fashion. here's have:

public static class xelementextensions {     public static xelement getelement(this xelement xelement, string elementname)     {         // calls xelement.element(elementname) , returns xelement (with validation).     }      public static telementtype getelementvalue<telementtype>(this xelement xelement, string elementname)     {         xelement element = getelement(xelement, elementname);         try         {             return (telementtype)((object) element.value); // first attempt.         }         catch (invalidcastexception originalexception)         {             string exceptionmessage = string.format("cannot cast element value '{0}' type '{1}'.", element.value,                 typeof(telementtype).name);             throw new invalidcastexception(exceptionmessage, originalexception);         }     } } 

as can see on first attempt line of getelementvalue, i'm trying go string -> object -> telementtype. unfortunately, not work integer test case. when running following test:

[test] public void getelementvalueshouldreturnvalueofintegerelementasinteger() {     const int expectedvalue = 5;     const string elementname = "intprop";     var xelement = new xelement("name");     var integerelement = new xelement(elementname) { value = expectedvalue.tostring() };     xelement.add(integerelement);      int value = xelementextensions.getelementvalue<int>(xelement, elementname);      assert.areequal(expectedvalue, value, "expected integer value not returned element."); } 

i following exception when getelementvalue<int> called:

system.invalidcastexception : cannot cast element value '5' type 'int32'.

am going have handle each casting case (or @ least numeric ones) separately?

you try convert.changetype

convert.changetype(element.value, typeof(telementtype)) 

Comments

Popular posts from this blog

ASP.NET/SQL find the element ID and update database -

jquery - appear modal windows bottom -

c++ - Compiling static TagLib 1.6.3 libraries for Windows -