Ciao, allora devo passare dei valori al costruttore del mio servizio:
MyService(string dep);
ho provato a seguire il tutorial ma non mi funziona:
class MyServiceHost : ServiceHost
{
public MyServiceHost(String dep, Type serviceType, params Uri[] baseAddresses)
: base(serviceType, baseAddresses)
{
foreach (var cd in this.ImplementedContracts.Values)
{
cd.Behaviors.Add(new MyInstanceProvider(dep));
}
}
}
public class MyInstanceProvider : Attribute, IInstanceProvider, IContractBehaviorAttribute, IContractBehavior
{
private String dep;
public MyInstanceProvider(String dep)
{
this.dep = dep;
}
public Type TargetContract
{
get { return typeof(MyService); }
}
#region IInstanceProvider Members
public object GetInstance(InstanceContext instanceContext, Message message)
{
return new MyService(this.dep);
}
public object GetInstance(InstanceContext instanceContext)
{
return this.GetInstance(instanceContext,null);
}
public void ReleaseInstance(InstanceContext instanceContext, object instance)
{
}
#endregion
#region IContractBehavior Members
public void AddBindingParameters(ContractDescription contractDescription, ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
{
}
public void ApplyClientBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
}
public void ApplyDispatchBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, DispatchRuntime dispatchRuntime)
{
dispatchRuntime.InstanceProvider = this;
}
public void Validate(ContractDescription contractDescription, ServiceEndpoint endpoint)
{
}
#endregion
} viene sollevata una eccezione quando istanzio MyServiceHost(), l'eccezione mi dice che il servizio MyService non ha un costruttore di default. Ovviamente a me serve solo avere il costruttore con parametro. Come posso risolvere?
Modificato da pippo87 il 29 gennaio 2012 02.36 -