Hi,

I'm trying to host my WCF service in a windows service host. For managing 
dependencies I'm using Castle WCF facility.

This is how my ContainerConfiguration(BootStrapper) looks like:

 public class ConfigureContainer : IConfigureContainer
        {
            private const string ServiceOne= "ServiceOne";
            private const string ServiceTwo      = "ServiceTwo";
            private const string ServiceThree = "ServiceThree";
            private const string CurrentAssembly      = "MyAssembly";

            private readonly IWindsorContainer container;

            public ConfigureContainer(IWindsorContainer container)
            {
                this.container = container;
            }


            public IWindsorContainer WindsorContainer { get { return container; 
} }


            public void AndRegisterComponents()
            {
                container.Register(AllTypes.FromAssemblyNamed(CurrentAssembly)
                       .Pick().If(type => type.GetInterfaces().Any(i => 
i.IsDefined(typeof(ServiceContractAttribute), true)))
                       .Configure(configurer => configurer
                                                    
.Named(configurer.Implementation.Name)
                                                    .AsWcfService(
                                                        new 
DefaultServiceModel()
                                                            .AddEndpoints(
                                                                
WcfEndpoint.FromConfiguration(ServiceOne),
                                                                
WcfEndpoint.FromConfiguration(ServiceTwo),
                                                                
WcfEndpoint.FromConfiguration(ServiceThree))
                                                                
.PublishMetadata()))
                       .WithService.Select((type, baseTypes) => 
type.GetInterfaces()
                           .Where(i => 
i.IsDefined(typeof(ServiceContractAttribute), true))));

            }
        }

This is how I do my hosting inside the service host:

partial class DataServicesHost : ServiceBase { private IWindsorContainer 
windsorContainer; public DataServicesHost() { InitializeComponent(); }

        protected override void OnStart(string[] args)
        {
            var configure = new ConfigureContainer();
            windsorContainer = configure.WindsorContainer;
        }

        protected override void OnStop()
        {
           if(windsorContainer != null)
           {
             windsorContainer.Dispose();
             windsorContainer = null;
           }
        }
    }

My ServiceOne is implemented as follows:

[ServiceContract]
    internal interface IServiceOne
    {
        [OperationContract]
        void DoSomething();
    }

    public class ServiceOne : IServiceOne
    {
        private readonly IDependency dependency;

        public ServiceOne(IDependency dependency)
        {
            this.dependency = dependency;
        }

        public void DoSomething()
        {
            dependency.GetSomething();
            //do something
        }
    }

    public interface IDependency
    {
        void GetSomething();
    }

    public class Dependency : IDependency
    {
        public void GetSomething()
        {
            //GetSomeThing
        }
}

Now my question is: how do I pass the IDependency to the container? How 
will I configure it so that while hosting it, it does't complain about not 
letting the host know of the dependency and keeps looking and failing over 
the default constructor implementation?

Thanks, -Mike

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/castle-project-users/-/oNA0FXNBI-sJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en.

Reply via email to