2009-10-16 3 views
5

में अमान्य संदर्भ त्रुटि को कैसे पकड़ें मैं कोडप्लेक्स NVelocity पर लाइब्रेरी का उपयोग कर रहा हूं और जब मैं VelocityEngine इंस्टेंस पर Evalute विधि निष्पादित करता हूं और टेम्पलेट टेक्स्ट में पैरामीटर में से एक नहीं मिला तो मैं एक त्रुटि पकड़ना चाहता हूं।NVelocity

मैं इसे कैसे प्राप्त कर सकता हूं?

मुझे IInvalidReferenceEventHandler इंटरफ़ेस NVelocity.App.Event नामस्थान में इंटरफ़ेस है लेकिन मुझे इसका उपयोग करने के बारे में कोई जानकारी नहीं मिली है। किसी भी तरह की सहायता को आभार समझेंगे।

उत्तर

3

मुझे समाधान मिला है।

मैं बनाया है eventhandler वर्ग:

StringWriter writer = new StringWriter(); 
NVelocity.App.VelocityEngine eng = new NVelocity.App.VelocityEngine(); 
try 
{ 
    NVelocityEventHandler te = new NVelocityEventHandler(); 
    EventCartridge ec = new EventCartridge(); 
    ec.AddEventHandler(te); 
    VelocityContext vc = new VelocityContext((IDictionary)parameters); 
    ec.AttachToContext(vc); 
    eng.Evaluate(vc, writer, "templatestring", template); 
} 
catch (ParseErrorException pe) 
{ 
    return pe.Message; 
} 
catch (MethodInvocationException mi) 
{ 
    return mi.Message; 
} 
:

public class NVelocityEventHandler : IInvalidReferenceEventHandler, IMethodExceptionEventHandler 
{ 
     #region IInvalidReferenceEventHandler Members 

     public object InvalidGetMethod(NVelocity.Context.IContext context, string reference, object object_Renamed, string property, NVelocity.Util.Introspection.Info info) 
     { 
      return "InvalidGetMethod:" + reference; 
     } 

     public object InvalidMethod(NVelocity.Context.IContext context, string reference, object object_Renamed, string method, NVelocity.Util.Introspection.Info info) 
     { 
      return "InvalidMethod:" + reference; 
     } 

     public bool InvalidSetMethod(NVelocity.Context.IContext context, string leftreference, string rightreference, NVelocity.Util.Introspection.Info info) 
     { 
      return true; 
     } 

     #endregion 

     #region IMethodExceptionEventHandler Members 

     object IMethodExceptionEventHandler.MethodException(Type claz, string method, Exception e) 
     { 
      return "MethodException:" + method; 
     } 

     #endregion 
} 

तो मैं यह नीचे दिए गए कोड में उपयोग