Je vais écrire une application, mais je n'ai jamais expérimenté pour permettre aux gens d'utiliser mon interface de programmation d'application avant.Je signifie comment un design un peu je devrais faire pour laisser les gens utiliser mes méthodes du monde extérieur comme API. P>
S'il vous plaît quelqu'un montrez-moi une voie. Je suis un peu nouveau à cela. P>
6 Réponses :
Faites de vos méthodes que vous souhaitez exposer au monde extérieur public code>. p>
Drôle, Mcwafflestix. (Vous essayiez d'être drôle, n'est-ce pas?)
Ok Bro, j'ai apprécié vos efforts pour répondre mais je dis que je suis nouveau à cette chose :)
@atarikg, j'espère que vous savez ce que le mot clé public signifie. Si vous ne le faites pas, vous avez une longue route à venir.
@RoberTharvey: Oui, sa réponse signifie que je ne suis pas entièrement sûr d'essayer d'être drôle ... :-)
Je sais ce que cela signifie, mais je pense que l'écriture de l'API est plus que cela.
Eh bien, Ataikg, Mcwafflestix a raison d'une chose. Les propriétés et les méthodes que vous marquez publiques sont l'API. Tout le reste est des meilleures pratiques, et Mike's (nouvelle et améliorée) post à peu près couvre cela.
Ce n'est peut-être pas la lecture la plus drôle, et certainement pas la seule lecture à faire sur le sujet, mais lors de la conception de votre bibliothèque de classe (votre API), enregistrez-vous avec le Directives de conception pour le développement de bibliothèques de classe de temps en temps, c'est une bonne idée d'avoir un design qui correspond un peu avec le .NET Framework Iteself. P>
Si vous voulez voir quelles sont les nouvelles dans cette zone, consultez la Cadre d'extensibilité géré . C'est un nouveau / "Unifié (voir les commentaires ...)" Méthode d'exposition des fonctionnalités pour les compléments et autres extensibilité / modularité. P>
CMN! Pourquoi ce commun? Think Thik que les utilisateurs qui utilisent déjà des solutions de CIO ou d'autres solutions de composition souhaiteraient avoir une dépendance encore une autre solution? API devrait être ioc agnostique. Attends, je vais ajouter ceci à ma réponse.
Êtes-vous heureux maintenant que j'ai changé "commun" à "unifié"? Je voulais simplement souligner son existence et ce qu'ils veulent. De plus, il a des concepts soignés qui le rendent au moins de travail à parcourir.
Eh bien, il y a quelques mois, j'ai eu l'occasion d'intégrer à notre composante d'application basée sur Windsor basée sur le MEF. J'ai terminé avec la mise en œuvre de mes propres abstractions sur ce composant. Je pense que l'API publique devrait fournir une API indépendante. Les interfaces simples sont les meilleures. Tout y compris le MEF les soutient. C'est logique?
J'ai trouvé que cette présentation est particulièrement perspicace: p>
Comment concevoir une bonne API et pourquoi cela compte fort>
http://lcsd05.cs.tamu.edu/slides/keynote.pdfledleight > p>
Merci, mais en fait, je veux d'abord apprendre à concevoir une API de base, au lieu de concevoir une bonne API :)
lien brisé. Peut-être que c'est le même discours? static.googleusercontent.com/media/research .google.com / fr // p ubs / ...
ajouté p>
Merci c'est une réponse cool, pourriez-vous me donner un petit exemple simple de code.
EMM, exemple de quel code? Vous pouvez trouver de nombreux exemples sur des sites Open Source comme codeProject.com, codépleplex.com, code.google.com, sourceforge.com. Je pense que c'est la meilleure façon d'apprendre les choses.
Il est i> clairement emballé, maintenant que quelques-uns d'entre nous ont fait des modifications majeures sur le poste.
@ROBERT: Parfois, ce serait bien avec une fonction "réputation partagée". Même si c'est un manuel, que l'auteur d'origine puisse diffuser le représentant gagné parmi les éditeurs ou quelque chose.
Un moyen de le faire est de créer une DLL pour votre fonctionnalité principale que d'autres utiliseront et un exe qui appelle les méthodes de la DLL. Si vous souhaitez que votre application soit prise en charge des plug-ins, consultez le System.addin Espace de noms. P>
Joli lien. Je cherche un article sur System.addin;)