Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
939 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  75  76  77  78  79  80
Auteur Sujet :

[Topic unique] .Net @ Prog

n°2006743
tomlev
Posté le 02-07-2010 à 19:44:11  profilanswer
 

Reprise du message précédent :
 
T'emballe pas, c'est quand-même nettement plus couteux que d'utiliser une chaine ;)
Par rapport à la réflection, je sais pas trop, faudrait benchmarker...
Enfin de toutes façons, ça sert essentiellement pour les scénarios de binding, donc les perfs ne sont pas critiques en général
 
 
 
Ca ressemble à un marqueur UTF-8... vérifie l'encodage du fichier. Perso j'ai jamais eu ce problème
 
 
 
T'es sûr ? Ca me semble bizarre, vu que le moteur de template utilise le compilateur C# 3...

mood
Publicité
Posté le 02-07-2010 à 19:44:11  profilanswer
 

n°2007240
TotalRecal​l
Posté le 05-07-2010 à 18:36:14  profilanswer
 

tomlev a écrit :


 
Effectivement, la doc de référence ne contient pas d'exemples, essentiellement parce que le format de saisie (commentaires de doc XML dans le code) n'est pas très pratique pour ça... Le wiki est là pour pallier ce manque. Je l'ai un peu enrichi il y a quelques jours, mais c'est vrai qu'il manque encore pas mal de choses... mais ça va s'arranger petit à petit, c'est du work in progress ;)
 


 
Je suis confiant, encore bravo et bonne continuation!
 

tomlev a écrit :


 
Ah, tu utilisais déjà la V1 alors ? :)
Effectivement, j'ai renommé et déplacé la classe... vu que c'est une beta, on se permet encore de faire des breaking changes, mais bien sûr on évitera ce genre de choses quand on arrivera à une version stable
 


 
Oui c'est normal. Oui et non, je ne l'utilise pas tel quel, pour l'instant je me suis contenté d'y reprendre au coup par coup uniquement ce qui m'intéresse.
 

tomlev a écrit :


 
Il y a dans Visual Studio une fonctionnalité "cachée" qui est bien pratique : les templates T4
Je pense que ça correspond très bien à ce que tu veux faire. J'en ai d'ailleurs utilisé dans le code de Dvp.NET, si tu veux y jeter un coup d'oeil (regarde par exemple FuncExtensions.tt)
Pour profiter de la coloration syntaxique et de l'autocompletion, tu peux utiliser ce plugin (gratuit)


 
C'est vrai que c'est excellent comme truc, je ne comprend pas que ça n'ait pas été plus mis en avant ou fusionné avec les Code Snippets.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2007241
TotalRecal​l
Posté le 05-07-2010 à 18:41:01  profilanswer
 


Tiens je connaissais pas ce machin !
Au dela du côté extensions, il doit y avoir pas mal de petits algos sympatoches à puiser...

 

edit : en fait il y a vraiment de tout, des méthodes super mal nommées, des trucs très bons... Et il y a même des sommités qui postent là bas apparemment, j'ai vu quelques noms connus, type Scott Guthrie...


Message édité par TotalRecall le 05-07-2010 à 18:50:56

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2007852
ov3rflow
Overrage
Posté le 07-07-2010 à 18:21:44  profilanswer
 

Je profite de ce topic :D
 
 
Je suis amené à gerer une collection, qui est indexé à l'aide d'un autre objet (Attention les yeux):
 

Code :
  1. Dictionary<SiteInfo, List<ResourceInfo>> _ressources = new Dictionary<SiteInfo, List<ResourceInfo>>();


 
J'ai l'impression que c'est crado, mais j'ai pas beaucoup d'idée pour faire plus propre (et simple). Bon en plus l'extension méthode "Contains" me servira pas puisque ma clé n'est pas un type primitif. (J'utilise du coup le Where<>, mais moins pratique )

n°2007857
TotalRecal​l
Posté le 07-07-2010 à 18:35:20  profilanswer
 

Je ne comprend pas du tout pourquoi tu parles de méthode d'extension :??: (un usage impropre du terme peut être?). Et contains fonctionne aussi sur les types références. J'ai un peu de mal à te suivre.

 

A part ça c'est pas choquant comme truc. En fonction des opérations que tu dois faire sur la liste dans le dico tu peux peut être remplacer le tout par un Lookup (un type générique introduit dans .Net 3, je te laisse trouver un tuto).
Là je m'exprime juste sur le dico qui embarque en value une List, faut voir ce que font SiteInfo et ResourceInfo pour proposer une alternative vraiment différente.


Message édité par TotalRecall le 07-07-2010 à 18:37:34

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2007861
ov3rflow
Overrage
Posté le 07-07-2010 à 18:44:23  profilanswer
 

Je parlais de la méthode d'extension bool IEnumerable <Tsource>.Contains(... )  Définie dans System.linq. Je me plante de terme ? Bon bref passons  :o  
 
 
 
Je regarde Lookup  :jap:

n°2007864
TotalRecal​l
Posté le 07-07-2010 à 18:51:27  profilanswer
 

Ah ok. Non je pensais juste à la version "non linq" du Contains, qui vient de ICollection ou un truc du genre.
Je ne pensais pas à la version "méthode d'extension" (qui existe effectivement!) d'abord parce que je ne m'en sers pas (:D ), et ensuite parce qu'hormis la possibilité de spécifier un ICOmparer particulier (dont tu te fous sans doute) elle n'a rien d'intéressant, je ne voyais pas trop pourquoi tu en parlais. Bref.

 

edit : enfin en fait il n'y a pas de Contains autre qu'en méthode d'extension sur les dico, c'est pour les listes évidemment, sorry :sarcastic:

 

Pour un dico effectivement Contains ne sert quasi à rien (sauf si tu as déjà la keyvaluepair). Si tu veux passer une lambda pour ta sélection, tu utilises un where, sinon containskey.


Message édité par TotalRecall le 07-07-2010 à 18:56:43

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2007919
tomlev
Posté le 08-07-2010 à 00:01:13  profilanswer
 

ov3rflow a écrit :

Je profite de ce topic :D
 
 
Je suis amené à gerer une collection, qui est indexé à l'aide d'un autre objet (Attention les yeux):
 

Code :
  1. Dictionary<SiteInfo, List<ResourceInfo>> _ressources = new Dictionary<SiteInfo, List<ResourceInfo>>();


 
J'ai l'impression que c'est crado, mais j'ai pas beaucoup d'idée pour faire plus propre (et simple). Bon en plus l'extension méthode "Contains" me servira pas puisque ma clé n'est pas un type primitif. (J'utilise du coup le Where<>, mais moins pratique )


 
Il faudrait déjà préciser ce que tu cherches à faire... En supposant que tu cherches à vérifier l'existence d'une clé spécifique, la méthode ContainsKey me semble assez adaptée. Par contre ça suppose d'avoir redéfini les méthodes Equals et GetHashCode dans la classe SiteValue, ou alors de passer un IEqualityComparer<SiteInfo> en paramètre du constructeur pour décider si 2 SiteInfo sont égaux.
 
Si ce n'est pas ça, précise ta question ;)

n°2007948
ov3rflow
Overrage
Posté le 08-07-2010 à 09:48:35  profilanswer
 

L'instance que je vais chercher aura les même valeurs, mais ne sera pas la même que dans le dictionnaire malheureusement.
 
Je m'en suis sortit sans problème avec le Where, et effectivement je n'avais pas pensé au containsKey + Lambda.
 
Enfin je m'en sors sans trop de problème, mais je me demandai juste si c'etait pas trop degueux, de faire une dico, avec un objet comme clé, et des List Comme contenu, car je trouve que c'est ptet pas forcement lisible et il y avais peut etre plus "propre"

n°2007969
ov3rflow
Overrage
Posté le 08-07-2010 à 10:36:05  profilanswer
 

En fait disons en .net 1.1, dès qu'il y avait des collections avec un peu de spécifique à gérer, le mieux etait de developper soit même ses classes de collection et d'élément en héritant des classes de collections et élément de base fournit par le Framework.
 
Maintenant, avec les Generics, j'ai tendance à utiliser à toutes les sauces les dictionnaires et list :D, ou même faire des classes qui héritent de List<>.  


Message édité par ov3rflow le 08-07-2010 à 10:37:07
mood
Publicité
Posté le 08-07-2010 à 10:36:05  profilanswer
 

n°2007981
ixemul
Nan mais sans blague ! ⚡
Posté le 08-07-2010 à 10:56:48  profilanswer
 

C'est tout à fait normal d'abuser des generics, ils sont là pour ça, depuis le temps qu'on les attendais avec .NET 1.1 :D

n°2007989
ov3rflow
Overrage
Posté le 08-07-2010 à 11:11:01  profilanswer
 

C'est clair que ça + link, comment ça change la vie  :love:  
 

n°2007991
ov3rflow
Overrage
Posté le 08-07-2010 à 11:16:16  profilanswer
 


 
Bien joué, ils n'en auront pas un en plus  [:nozdormu]


Message édité par ov3rflow le 08-07-2010 à 11:16:39
n°2007992
ixemul
Nan mais sans blague ! ⚡
Posté le 08-07-2010 à 11:17:07  profilanswer
 


 
ça fait 4 ans que je refuse de faire autre chose que du .NET :D (on m'a même demandé des services en Cobol récemment... plus JAMAIS de la vie !)

n°2008001
ov3rflow
Overrage
Posté le 08-07-2010 à 11:39:42  profilanswer
 

Bon sinon quand est ce que la sous cat .NET sera visible de la page principale   [:leglatin:5]

n°2008002
ixemul
Nan mais sans blague ! ⚡
Posté le 08-07-2010 à 11:41:20  profilanswer
 

:ouch: j'avais jamais fait gaffe

n°2008007
ixemul
Nan mais sans blague ! ⚡
Posté le 08-07-2010 à 11:48:23  profilanswer
 

Ouais, enfin s'il fait du .NET au même rythme qu'il s'occupe de son topic "Effets Demos OldSchool en asm"...  :whistle:

n°2008021
masklinn
í dag viðrar vel til loftárása
Posté le 08-07-2010 à 12:50:54  profilanswer
 

Histoire que ça soit quand même quelque part avant que je le dégage, pour un option type C# vous préférez (même interface dans les deux cas) un type unique:

Code :
  1. class Nullable<T>
  2.    {
  3.        readonly bool hasValue;
  4.        readonly T value;
  5.  
  6.        public bool HasValue { get { return hasValue; } }
  7.  
  8.        public Nullable()
  9.        {
  10.            hasValue = false;
  11.            value = default(T);
  12.        }
  13.        public Nullable(T value)
  14.        {
  15.            hasValue = true;
  16.            this.value = value;
  17.        }
  18.  
  19.  
  20.        public T GetOrDefault()
  21.        {
  22.            return value;
  23.        }
  24.        public T GetOrDefault(T def)
  25.        {
  26.            if (!hasValue)
  27.                return def;
  28.            return value;
  29.        }
  30.        public Nullable<K> Map<K>(Func<T, K> mapper)
  31.        {
  32.            if (!hasValue)
  33.                return new Nullable<K>();
  34.            return new Nullable<K>(mapper(value));
  35.        }
  36.  
  37.        public Nullable<T> Execute(Action<T> ifHasValue, Action ifHasNoValue)
  38.        {
  39.            if (hasValue)
  40.                ifHasValue(value);
  41.            else
  42.                ifHasNoValue();
  43.            return this;
  44.        }
  45.        public Nullable<T> Execute(Action<T> ifHasValue)
  46.        {
  47.            if (hasValue)
  48.                ifHasValue(value);
  49.            return this;
  50.        }
  51.        public Nullable<T> Execute(Action ifHasNoValue)
  52.        {
  53.            if (!hasValue)
  54.                ifHasNoValue();
  55.            return this;
  56.        }
  57.    }


 
ou une hiérarchie avec un ADT au sommet et deux implés concrètes  

Code :
  1. public interface Nullable<T>
  2.    {
  3.        bool HasValue { get; }
  4.        T GetOrDefault();
  5.        T GetOrDefault(T def);
  6.        Nullable<K> Map<K>(Func<T, K> map);
  7.        void Execute(Action<T> ifHasValue, Action ifHasNoValue);
  8.        void Execute(Action<T> ifHasValue);
  9.        void Execute(Action ifHasNoValue);
  10.    }
  11.    public class Some<T> : Nullable<T>
  12.    {
  13.        private T value;
  14.        public Some(T value)
  15.        {
  16.            this.value = value;
  17.        }
  18.  
  19.        public bool HasValue { get { return true; } }
  20.        public T GetOrDefault() { return value; }
  21.        public T GetOrDefault(T def) { return value; }
  22.        public Nullable<K> Map<K>(Func<T, K> map) { return new Some<K>(map(value)); }
  23.        public void Execute(Action<T> ifHasValue, Action ifHasNoValue) { ifHasValue(value); }
  24.        public void Execute(Action<T> ifHasValue) { ifHasValue(value); }
  25.        public void Execute(Action ifHasNoValue) { }
  26.    }
  27.    public class Null<T> : Nullable<T>
  28.    {
  29.        public bool HasValue { get { return false; } }
  30.        public T GetOrDefault() { return default(T); }
  31.        public T GetOrDefault(T def) { return def; }
  32.        public Nullable<K> Map<K>(Func<T, K> map) { return new Null<K>(); }
  33.        public void Execute(Action<T> ifHasValue, Action ifHasNoValue) { ifHasNoValue(); }
  34.        public void Execute(Action<T> ifHasValue) { }
  35.        public void Execute(Action ifHasNoValue) { ifHasNoValue(); }
  36.    }


?
 

Spoiler :

ah je remarque quand même une différence dans la mesure où les Execute sont chainables dans la 1ère version


 
edit: also faudrait probablement dégager GetOrDefault() et ajouter un Execute(Action, Action<T> ) pour avoir une meilleure interface maintenant que j'y pense, et au final dans le 2e cas HasValue n'a qu'un intérêt très limité dans la mesure où on peut juste tester le type concret.


Message édité par masklinn le 08-07-2010 à 12:56:09

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2008026
masklinn
í dag viðrar vel til loftárása
Posté le 08-07-2010 à 13:26:25  profilanswer
 


http://en.wikipedia.org/wiki/Option_type

 

Nope, il est pourri et il est que pour les values, c'est pas un option type générique.

Message cité 1 fois
Message édité par masklinn le 08-07-2010 à 13:34:51

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2008032
masklinn
í dag viðrar vel til loftárása
Posté le 08-07-2010 à 13:49:28  profilanswer
 


C'est une version type-safe de "null", et avec la bonne interface tu peux lifter des opérations dans ton conteneur ce qui te permet de ne pas te poser de questions sur "y a-t-il ou non une valeur dedans" parce que c'est le conteneur qui se démerde et dispatche correctement. System.Nullable fait du lifting sur les opérateurs pour que tu puisses écrire "a += 1" quand a est un Nullable<int> donc potentiellement null sans avoir à checker si c'est une valeur ou un null.

 

Sauf que dans ce cas, quand tu unwrap tu dois tester sur HasValue, alors qu'avec les types concrets tu testes sur le type (built-in, une property de moins) et les implés sont inconditionnelles (puisque la condition est résolue à la création des instances).

 

Et tu peux avoir des méthodes/properties spécifiques sur les types concrets, genre Get sur Some qui renverrait directement this.value, mais qui ne serait appellable qu'après avoir casté en Some et donc vérifié que c'était possible (sinon logiquement le compilo gueule)


Message édité par masklinn le 08-07-2010 à 13:51:37

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2008061
TotalRecal​l
Posté le 08-07-2010 à 15:02:34  profilanswer
 


C'est le genre de trucs qui peuvent paraitre un peu abstraits ou inutiles quand on n'a jamais fait de prog fonctionnelle [:spamafote]. Après c'est clair qu'en C# ça ne sert pas tous les jours parce qu'il y a plein de moyens plus ou moins naturels de faire autrement...


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2008087
masklinn
í dag viðrar vel til loftárása
Posté le 08-07-2010 à 16:21:04  profilanswer
 


Naturellement, F# est une réimp de OCaml.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2008401
deliriumtr​emens
sic transit intestinal...
Posté le 09-07-2010 à 14:56:44  profilanswer
 

Tiens, au passage, une petite lib utilisée depuis ce matin
 
AutoMapper (mapping objet-objet, utilisé de mon côté pour simplifier le sale boulot entre mes Models et ViewModels)

n°2008843
TotalRecal​l
Posté le 12-07-2010 à 13:39:40  profilanswer
 

Pas mal. Evidemment on peut arriver au même résultat de plein de façons à la mimine mais ça peut être intéressant d'automatiser en s'appuyant sur un substrat commun plutôt que des classes adaptatrice et des constructeurs de recopie dans tous les cas,Surtout lorsque on a pas mal de mappings différents à faire.

 

edit : ajouté au deuxieme post pour info...


Message édité par TotalRecall le 12-07-2010 à 13:48:07

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2008847
TotalRecal​l
Posté le 12-07-2010 à 13:47:37  profilanswer
 

Tiens petite idée de débat : MVC ou Webforms ?
 
C'est peut être faute de m'y être suffisamment intéressé mais j'ai jamais été foutu de franchir le pas à MVC, même si je lis de plus en plus souvent que les webforms c'est has been, surtout en RAD.  
 
Pourtant je reste un adepte de cette techno, dont les qqes inconvénients qui fournissent des arguments à l'avantage du MVC peuvent être corrigés selon moi (archi ntiers pour l'aspect SOC et l'extensibilité, viewstate serveur, etc).
 
Vous bossez en quoi vous ? Pourquoi ?


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2008850
tomlev
Posté le 12-07-2010 à 13:57:38  profilanswer
 


Non, pas possible : en MVC le ViewState est désactivé, et la plupart des contrôles serveur WebForms dépendent du ViewState
Par contre MS vient de créer un nouveau moteur de vues appelé Razor, qui permet de simplifier l'écriture des vues HTML

n°2008863
alien cons​piracy
hardtrance addict
Posté le 12-07-2010 à 16:26:29  profilanswer
 

Je pose mon drapeau. :)

n°2008865
ixemul
Nan mais sans blague ! ⚡
Posté le 12-07-2010 à 16:33:28  profilanswer
 

Histoire de remettre 10 frs dans le nourrin, si je veux utiliser Entity Framework avec Oracle, c'est quoi le "mieux" aujourd'hui ? (pas en 2011 :D)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  75  76  77  78  79  80

Aller à :
Ajouter une réponse
 

Sujets relatifs
service web REST en VB.NET HeySpreadRequete Access avec paramètres, éxécutée en VB .Net
impersonalisation sous ASP.NET[Topic Unique] les blagues pourries de harko et florentg
Generation d'un GIF en ASP.NETAppeler un service web .NET sécurisé en Java
Prog Visual Basic "periodicité"[Oracle] Temps d'execution de requete tres long par rapport au .NET
[VB.NET] Lister des imprimantes réseauxFusion de résultats de requêtes dans une unique Table
Plus de sujets relatifs à : [Topic unique] .Net @ Prog


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR