public Base4Host(string appName, int port)
{
if (string.IsNullOrEmpty(appName)) throw new ArgumentNullException("appName");
if (port <= 1024) throw new ArgumentOutOfRangeException("port", "port should be greater then 1024");
_appName = appName;
_port = port;
}
public Base4Host(string appName, int port, string root)
: this(appName, port)
if (string.IsNullOrEmpty(root)) throw new ArgumentNullException("root");
_root = root;
void AddComponentWithExtendedProperties(String key, Type classType, IDictionary extendedProperties);
void AddComponentWithExtendedProperties(String key, Type serviceType, Type classType, IDictionary extendedProperties);
private const string AdditionalParametersKey = "AdditionalParameters";
private void Kernel_ComponentModelCreated(Castle.Core.ComponentModel model)
if (model.Implementation == typeof(Base4Host))
if ((model.Configuration == null)
&& model.ExtendedProperties.Contains(AdditionalParametersKey))
Dictionary<string, object> additionalParameters = (Dictionary<string, object>)model.ExtendedProperties[AdditionalParametersKey];
foreach (string parameterName in additionalParameters.Keys)
model.Parameters.Add(parameterName, Convert.ToString(additionalParameters[parameterName]));
protected override void Init()
Kernel.ComponentModelCreated += new ComponentModelDelegate(Kernel_ComponentModelCreated);
Dictionary<string, object> additionalParameters = new Dictionary<string, object>();
additionalParameters.Add("appName", _applicationName);
additionalParameters.Add("port", _port);
additionalParameters.Add("root", _baseDirectory);
Hashtable properties = new Hashtable();
properties.Add(AdditionalParametersKey, additionalParameters);
Kernel.AddComponentWithProperties("base4.defaultHost", typeof(Base4Host), properties);