Ho alcuni comportamenti di servizio per i servizi WCF che voglio semplicemente registrare; non c'è configurazione. Ho pensato ho potuto saltare creando un discendente BehaviorExtensionElement ogni volta utilizzando generici:È possibile un BehaviorExtensionElement generico?
public class SimpleBehaviorExtensionElement<TBehavior> : BehaviorExtensionElement
where TBehavior: new()
{
protected override object CreateBehavior()
{
return new TBehavior();
}
public override Type BehaviorType
{
get { return typeof(TBehavior); }
}
}
E in Web.config:
<behaviorExtensions>
<add name="myBehavior2"
type="WcfService1.SimpleBehaviorExtensionElement`1[[WcfService1.MyBehavior,
WcfService1]], WcfService1"/>
</behaviorExtensions>
WcfService1.MyBehavior esiste, implementa IServiceBehavior, ed è stato testato.
Ma quando mi riferisco < myBehavior2/> nella sezione comportamento del file di configurazione, ottengo:
Si è verificato un errore durante la creazione del gestore della sezione di configurazione per System.ServiceModel/comportamenti: elemento Extension 'myBehavior2' non può essere aggiunto a questo elemento . Verificare che l'estensione sia registrata nella raccolta di estensioni a system.serviceModel/extensions/behaviorExtensions. Nome parametro: elemento
Tutto funziona se creo un discendente BehaviorExtensionElement non generico, che posso fare. Ma ora mi dà fastidio. ;)
Questo non è il caso. Ho degli elementi di estensione del comportamento di lavoro che specificano il tipo senza una versione. – TrueWill
@TrueWill: dubito che uno di quegli elementi di lavoro sia effettivamente generico. –
hai provato questo e riuscito a farlo funzionare con un'estensione generica? – TrueWill