[Mono-bugs] [Bug 343869] XPathNavigator.ValueAs() throws	NotImplementedException
    bugzilla_noreply at novell.com 
    bugzilla_noreply at novell.com
       
    Tue Feb 17 09:46:10 EST 2009
    
    
  
https://bugzilla.novell.com/show_bug.cgi?id=343869
User robert.sevcik at gmail.com added comment
https://bugzilla.novell.com/show_bug.cgi?id=343869#c8
--- Comment #8 from Robert Sevcik <robert.sevcik at gmail.com>  2009-02-17 07:46:10 MST ---
Okay, it seems it has not been included in 1.2.6+dfsg (ubuntu 8.04)
I came up with an ugly workaround in my method if anyone's interested. 
        protected virtual ResultT Convert<ResultT>(XPathNavigator nav)
        {
            Type resultType = typeof(ResultT);
            ConstructorInfo ctor = null;
            if(resultType.IsClass) ctor = resultType.GetConstructor(new Type[]
{ typeof(XPathNavigator) });
            ResultT result;
            if (ctor != null)
                result = (ResultT)ctor.Invoke(new object[] { nav.Clone() });
            else if (resultType.Equals(typeof(XPathNavigator)))
                result = (ResultT)(object)nav.Clone();
            else
            {
                try
                {
                    // not implemented in mono 1.2.6
https://bugzilla.novell.com/show_bug.cgi?id=343869
                    result = (ResultT)nav.ValueAs(resultType);
                }
                catch(NotImplementedException x)
                {
                    switch(resultType.FullName)
                    {
                    case "System.String":  result = (ResultT) (object)
nav.ToString();     break;
                    case "System.Boolean": result = (ResultT) (object)
nav.ValueAsBoolean; break;
                    case "System.Int32":   result = (ResultT) (object)
nav.ValueAsInt;     break;
                    case "System.Int64":   result = (ResultT) (object)
nav.ValueAsLong;    break;
                    case "System.Double":  result = (ResultT) (object)
nav.ValueAsDouble;  break;
                    default: throw new
NotImplementedException(String.Format("Conversion to {0} is not implemented.",
resultType.FullName), x); 
                    }
                }
            }
            return result;
        }
-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
    
    
More information about the mono-bugs
mailing list