Question

J'ai un WCF de travail interface en utilisant plus de 100 ServiceKnownType dans le contrat comme celui-ci:

[ServiceKnownType(typeof(RowUser))]
[ServiceKnownType(typeof(RowRegion))]
[ServiceKnownType(typeof(RowDocument))]
[... loads more ...]
[ServiceContract(SessionMode = SessionMode.Required)]
public interface IServiceBrowse : IDisposable
{
  [OperationContract]
  void Insert(Row satz);
}

Est-il possible de fournir ces ServiceKnownTypes au cours de l'exécution
Il est non seulement sujette aux erreurs et fastidieux d'ajouter tous ces ServiceKnownTypes dans la source, il garde mes assemblages attachés ensemble d'une manière que je ne aime pas (je voudrais être en mesure d'extraire ces types dans les sous-assemblages découpler, mais ne peuvent pas car les besoins de services à la liste de tous les types connus).

Était-ce utile?

La solution

Oui, il y a.

ServiceKnownTypeAttribute vous permet de spécifier un nom de méthode comme premier paramètre, suivi d'un paramètre contenant la System.Type mise en oeuvre de cette méthode.

La méthode spécifiée doit être à la fois statique et du public, et ont un type de retour de IEnumerable.

[ServiceKnownType("RegisterKnownTypes", typeof(Services))]
public class Services : IServices
{
    static public IEnumerable<Type> RegisterKnownTypes(ICustomAttributeProvider provider)
    {
    }
}

voir aussi http://msdn.microsoft.com/ fr-fr / bibliothèque / system.servicemodel.serviceknowntypeattribute.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top