2010-09-29 6 views
0

Hi J'ai utilisé le projet Castle pour la première fois et j'ai rencontré un problème lors de l'enregistrement d'un composant avec le conteneur dans une application console. ci-après le fichier castle.config:Problème de composant enregistreur Castle windsor

<configuration> 
    <configSections> 
    <section name="castle" 
     type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor" /> 
    </configSections> 
    <castle> 
    <components> 
     <component id="messageSender" 
       type="CastleTest.SecretMessageSender, CastleTest"> 
     <parameters>SecretMessageSender 
      <from>[email protected]</from> 
      <encoder>${encoder.null}</encoder> 
     </parameters> 
     </component> 

     <component id="encoder.silly" 
       service="CastleTest.IEncoder, CastleTest" 
       type="CastleTest.SillyEncoder, CastleTest" /> 

     <component id="encoder.null" 
       service="CastleTest.IEncoder, CastleTest" 
       type="CastleTest.NullEncoder, CastleTest" /> 

    </components> 
    </castle> 

</configuration> 

Ce qui suit est la classe principale où je suis en train d'enregistrer mon composant:

namespace CastleTest 
{ 
    class testNewCastle 
    { 
     static void Main(string[] args) 
     { 
      IWindsorContainer container = new WindsorContainer(); 

      **Tried various methods to register components here** 

      SecretMessageSender sender = container.Resolve<SecretMessageSender>("messageSender"); 

      sender.SendMessage("Rahul", "Testing using Castle!"); 
      Console.Read(); 
     } 
    } 
} 

Ce qui suit est la classe SecretMessageSender:

namespace CastleTest 
{ 
    public interface IEncoder 
    { 
     string Encode(string source); 
    } 

    public class SecretMessageSender 
    { 
     private readonly IEncoder _encoder; 
     private readonly string _from; 

     public SecretMessageSender(string from, IEncoder encoder) 
     { 
      _from = from; 
      _encoder = encoder; 
     } 

     public void SendMessage(string to, string body) 
     { 
      Console.WriteLine("to: {0}\r\nfrom: {1}\r\n\r\n{2}", to, _from, _encoder.Encode(body)); 
     } 
    } 
} 

S'il vous plaît Aidez-moi à exécuter ce code.

Merci.

Répondre

Questions connexes