8
votes

Contrat de données types connus et un ensemble d'interfaces héritantes

i développe (réécrire sur wcf) un fichier d'analyse de fichier d'analyse de fichier chaîne [] code> et de retourner isection [] code> mais il s'agit d'un ensemble d'interfaces imbriquées:

<system.runtime.serialization>
  <dataContractSerializer>
    <declaredTypes>
      <add type="Project.Contracts.ISumarySection, Project.Contracts">
        <knownType type="Project.Format.A.SummarySectionFormatA, Project.Format.A" />
      </add>
      <add type="Project.Contracts.IDataSection, Project.Contracts">
        <knownType type="Project.Format.A.DataSectionFormatA, Project.Format.A" />
      </add>
    </declaredTypes>
  </dataContractSerializer>
</system.runtime.serialization>


1 commentaires

Pouvez-vous poster vos contrats d'opération de service s'il vous plaît


3 Réponses :


2
votes

Regardez le code ci-dessous

[ServiceContract]
[ServiceKnownType(typeof(SummarySectionFormatA))]
[ServiceKnownType(typeof(DataSectionFormatA))]
public interface IService {}

public class Service : IService {}


1 commentaires

OK j'ai compris. Vous suggérez donc de décorer l'interface (contrat de service) mais pas de la mise en œuvre. Mais comme je l'ai mentionné dans le bas de ma question, je ne veux pas le faire, car l'interface est placée dans les contrats. Je veux utiliser une config.



0
votes

essayer de faire cela fonctionner: xxx

mais semble que serveur et client doit faire référence à un projet projet.format.a.dll pour le faire fonctionner (méthode ne pas retourner null)


0 commentaires

1
votes

Je crois que vous devriez changer votre implémentation un peu ... Jetez un coup d'œil à ce Question et voir si cela aide.


5 commentaires

Droit. Ma question principale est pourquoi ne fonctionne pas fonctionne. On dirait que le projet n'est pas référencé (ce que je veux éviter) et tapez.getType () renvoie null. Besoin de changer la mise en œuvre en effet.


Correct! Le problème est que le service dépend de quelque chose qui est inconnu ... Je tiens également à remettre en question l'utilisation de l'interface pour les contrats de données, pourquoi avez-vous l'intention de résumé qui? Je recommanderais de le faire comme concret ou penser à cet angle aussi.


C'était la conception initiale et cela fonctionnait bien comme faisant partie d'une application Web. Maintenant, je séparais une analyse de la logique de l'application dans un service Web dédié (WCF), essayant de le faire sans changement de conception majeur.


Partagez le design que vous avez finalement conclu avec.


Les moyens de configuration et d'attribut fonctionnent pour moi avec la condition pour faire référence à tous les projets de type à connaître au serveur et au client.