Par exemple, j'appelle ma méthode ainsi : SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 });
Merci pour votre aide. Sébastien
Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la plus propre, je vous la donne pour information :
public virtual TDataSet SelectItem<T>(T obj) { Type type = typeof(T);
if (type.IsArray) { int i = 0; IEnumerable t = (IEnumerable)obj; foreach (object o in t) { // object au lieu de DateTime? :( _Parameters[i++].ParameterValue = o; } } else { _Parameters[0].ParameterValue = obj; } return Select(); }
Sébastien
-- --- Sébastien FERRAND Microsoft Visual C# MVP blog : http://blogs.developpeur.org/sebmafate
Sébastien FERRAND a couché sur son écran :
Bonjour à tous...
je cherche depuis un petit moment... mais là je sèche...
voici une méthode :
public virtual TDataSet SelectItem<T>(T obj) {
Type type = typeof(T);
Par exemple, j'appelle ma méthode ainsi :
SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 });
Merci pour votre aide.
Sébastien
Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la
plus propre, je vous la donne pour information :
public virtual TDataSet SelectItem<T>(T obj) {
Type type = typeof(T);
if (type.IsArray)
{
int i = 0;
IEnumerable t = (IEnumerable)obj;
foreach (object o in t) { // object au lieu de DateTime? :(
_Parameters[i++].ParameterValue = o;
}
}
else
{
_Parameters[0].ParameterValue = obj;
}
return Select();
}
Sébastien
--
---
Sébastien FERRAND
Microsoft Visual C# MVP
blog : http://blogs.developpeur.org/sebmafate
Par exemple, j'appelle ma méthode ainsi : SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 });
Merci pour votre aide. Sébastien
Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la plus propre, je vous la donne pour information :
public virtual TDataSet SelectItem<T>(T obj) { Type type = typeof(T);
if (type.IsArray) { int i = 0; IEnumerable t = (IEnumerable)obj; foreach (object o in t) { // object au lieu de DateTime? :( _Parameters[i++].ParameterValue = o; } } else { _Parameters[0].ParameterValue = obj; } return Select(); }
Sébastien
-- --- Sébastien FERRAND Microsoft Visual C# MVP blog : http://blogs.developpeur.org/sebmafate
Paul Bacelar
foreach (DateTime o in obj) { _Parameters[i++].ParameterValue = o; } -- Paul Bacelar MVP VC++
"Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message news:
Sébastien FERRAND a couché sur son écran :
Bonjour à tous...
je cherche depuis un petit moment... mais là je sèche...
voici une méthode :
public virtual TDataSet SelectItem<T>(T obj) { Type type = typeof(T);
Par exemple, j'appelle ma méthode ainsi : SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 });
Merci pour votre aide. Sébastien
Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la plus propre, je vous la donne pour information :
public virtual TDataSet SelectItem<T>(T obj) { Type type = typeof(T);
if (type.IsArray) { int i = 0; IEnumerable t = (IEnumerable)obj; foreach (object o in t) { // object au lieu de DateTime? :( _Parameters[i++].ParameterValue = o; } } else { _Parameters[0].ParameterValue = obj; } return Select(); }
Sébastien
-- --- Sébastien FERRAND Microsoft Visual C# MVP blog : http://blogs.developpeur.org/sebmafate
foreach (DateTime o in obj) {
_Parameters[i++].ParameterValue = o;
}
--
Paul Bacelar
MVP VC++
"Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message
news:mn.f38f7d6660a533b0.56686@vbmaf.net...
Sébastien FERRAND a couché sur son écran :
Bonjour à tous...
je cherche depuis un petit moment... mais là je sèche...
voici une méthode :
public virtual TDataSet SelectItem<T>(T obj) {
Type type = typeof(T);
Par exemple, j'appelle ma méthode ainsi :
SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 });
Merci pour votre aide.
Sébastien
Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la
plus propre, je vous la donne pour information :
public virtual TDataSet SelectItem<T>(T obj) {
Type type = typeof(T);
if (type.IsArray)
{
int i = 0;
IEnumerable t = (IEnumerable)obj;
foreach (object o in t) { // object au lieu de DateTime? :(
_Parameters[i++].ParameterValue = o;
}
}
else
{
_Parameters[0].ParameterValue = obj;
}
return Select();
}
Sébastien
--
---
Sébastien FERRAND
Microsoft Visual C# MVP
blog : http://blogs.developpeur.org/sebmafate
Par exemple, j'appelle ma méthode ainsi : SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 });
Merci pour votre aide. Sébastien
Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la plus propre, je vous la donne pour information :
public virtual TDataSet SelectItem<T>(T obj) { Type type = typeof(T);
if (type.IsArray) { int i = 0; IEnumerable t = (IEnumerable)obj; foreach (object o in t) { // object au lieu de DateTime? :( _Parameters[i++].ParameterValue = o; } } else { _Parameters[0].ParameterValue = obj; } return Select(); }
Sébastien
-- --- Sébastien FERRAND Microsoft Visual C# MVP blog : http://blogs.developpeur.org/sebmafate
Sébastien FERRAND [MVP]
Oui Paul...
mais le problème ici, c'est que c'est le type sous-jacent de T qui m'intéresse. Ca peut être int, long, string...
foreach (DateTime o in obj) { _Parameters[i++].ParameterValue = o; } -- Paul Bacelar MVP VC++
"Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message news: > Sébastien FERRAND a couché sur son écran : >> Bonjour à tous... >> >> je cherche depuis un petit moment... mais là je sèche... >> >> voici une méthode : >> >> public virtual TDataSet SelectItem<T>(T obj) { >> Type type = typeof(T); >> >> if (type.IsArray) >> { >> // Parcours du tableau >> >> } >> else >> { >> _Parameters[0].ParameterValue = obj; >> } >> return Select(); >> } >> >> Comment puis-je parcourir le tableau obj ? >> >> Par exemple, j'appelle ma méthode ainsi : >> SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 }); >> >> Merci pour votre aide. >> Sébastien > > Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la > plus propre, je vous la donne pour information : > > public virtual TDataSet SelectItem<T>(T obj) { > Type type = typeof(T); > > if (type.IsArray) > { > int i = 0; > IEnumerable t = (IEnumerable)obj; > foreach (object o in t) { // object au lieu de DateTime? :( > _Parameters[i++].ParameterValue = o; > } > } > else > { > _Parameters[0].ParameterValue = obj; > } > return Select(); > } > > > Sébastien > > -- > --- > Sébastien FERRAND > Microsoft Visual C# MVP > blog : http://blogs.developpeur.org/sebmafate > >
Oui Paul...
mais le problème ici, c'est que c'est le type sous-jacent de T qui
m'intéresse.
Ca peut être int, long, string...
foreach (DateTime o in obj) {
_Parameters[i++].ParameterValue = o;
}
--
Paul Bacelar
MVP VC++
"Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message
news:mn.f38f7d6660a533b0.56686@vbmaf.net...
> Sébastien FERRAND a couché sur son écran :
>> Bonjour à tous...
>>
>> je cherche depuis un petit moment... mais là je sèche...
>>
>> voici une méthode :
>>
>> public virtual TDataSet SelectItem<T>(T obj) {
>> Type type = typeof(T);
>>
>> if (type.IsArray)
>> {
>> // Parcours du tableau
>>
>> }
>> else
>> {
>> _Parameters[0].ParameterValue = obj;
>> }
>> return Select();
>> }
>>
>> Comment puis-je parcourir le tableau obj ?
>>
>> Par exemple, j'appelle ma méthode ainsi :
>> SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 });
>>
>> Merci pour votre aide.
>> Sébastien
>
> Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la
> plus propre, je vous la donne pour information :
>
> public virtual TDataSet SelectItem<T>(T obj) {
> Type type = typeof(T);
>
> if (type.IsArray)
> {
> int i = 0;
> IEnumerable t = (IEnumerable)obj;
> foreach (object o in t) { // object au lieu de DateTime? :(
> _Parameters[i++].ParameterValue = o;
> }
> }
> else
> {
> _Parameters[0].ParameterValue = obj;
> }
> return Select();
> }
>
>
> Sébastien
>
> --
> ---
> Sébastien FERRAND
> Microsoft Visual C# MVP
> blog : http://blogs.developpeur.org/sebmafate
>
>
foreach (DateTime o in obj) { _Parameters[i++].ParameterValue = o; } -- Paul Bacelar MVP VC++
"Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message news: > Sébastien FERRAND a couché sur son écran : >> Bonjour à tous... >> >> je cherche depuis un petit moment... mais là je sèche... >> >> voici une méthode : >> >> public virtual TDataSet SelectItem<T>(T obj) { >> Type type = typeof(T); >> >> if (type.IsArray) >> { >> // Parcours du tableau >> >> } >> else >> { >> _Parameters[0].ParameterValue = obj; >> } >> return Select(); >> } >> >> Comment puis-je parcourir le tableau obj ? >> >> Par exemple, j'appelle ma méthode ainsi : >> SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 }); >> >> Merci pour votre aide. >> Sébastien > > Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la > plus propre, je vous la donne pour information : > > public virtual TDataSet SelectItem<T>(T obj) { > Type type = typeof(T); > > if (type.IsArray) > { > int i = 0; > IEnumerable t = (IEnumerable)obj; > foreach (object o in t) { // object au lieu de DateTime? :( > _Parameters[i++].ParameterValue = o; > } > } > else > { > _Parameters[0].ParameterValue = obj; > } > return Select(); > } > > > Sébastien > > -- > --- > Sébastien FERRAND > Microsoft Visual C# MVP > blog : http://blogs.developpeur.org/sebmafate > >
Paul Bacelar
Il y a pas de spécialisation avec les génériques C# ? genre (je suis peut-être un peu rêveur?):
public virtual TDataSet SelectItem<T>(T obj){ _Parameters[0].ParameterValue = obj; }
public virtual TDataSet SelectItem<T where T : IEnumerable<U> >(T obj){ foreach (U o in obj) { _Parameters[i++].ParameterValue = o; } -- Paul Bacelar MVP VC++
"Sébastien FERRAND [MVP]" wrote in message news:
Oui Paul...
mais le problème ici, c'est que c'est le type sous-jacent de T qui m'intéresse. Ca peut être int, long, string...
foreach (DateTime o in obj) { _Parameters[i++].ParameterValue = o; } -- Paul Bacelar MVP VC++
"Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message news: > Sébastien FERRAND a couché sur son écran : >> Bonjour à tous... >> >> je cherche depuis un petit moment... mais là je sèche... >> >> voici une méthode : >> >> public virtual TDataSet SelectItem<T>(T obj) { >> Type type = typeof(T); >> >> if (type.IsArray) >> { >> // Parcours du tableau >> >> } >> else >> { >> _Parameters[0].ParameterValue = obj; >> } >> return Select(); >> } >> >> Comment puis-je parcourir le tableau obj ? >> >> Par exemple, j'appelle ma méthode ainsi : >> SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 }); >> >> Merci pour votre aide. >> Sébastien > > Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la > plus propre, je vous la donne pour information : > > public virtual TDataSet SelectItem<T>(T obj) { > Type type = typeof(T); > > if (type.IsArray) > { > int i = 0; > IEnumerable t = (IEnumerable)obj; > foreach (object o in t) { // object au lieu de DateTime? :( > _Parameters[i++].ParameterValue = o; > } > } > else > { > _Parameters[0].ParameterValue = obj; > } > return Select(); > } > > > Sébastien > > -- > --- > Sébastien FERRAND > Microsoft Visual C# MVP > blog : http://blogs.developpeur.org/sebmafate > >
Il y a pas de spécialisation avec les génériques C# ?
genre (je suis peut-être un peu rêveur?):
public virtual TDataSet SelectItem<T>(T obj){
_Parameters[0].ParameterValue = obj;
}
public virtual TDataSet SelectItem<T where T : IEnumerable<U> >(T obj){
foreach (U o in obj) {
_Parameters[i++].ParameterValue = o;
}
--
Paul Bacelar
MVP VC++
"Sébastien FERRAND [MVP]" <SbastienFERRANDMVP@discussions.microsoft.com>
wrote in message news:356558A6-7D2D-4202-9122-17E725B1A8AC@microsoft.com...
Oui Paul...
mais le problème ici, c'est que c'est le type sous-jacent de T qui
m'intéresse.
Ca peut être int, long, string...
foreach (DateTime o in obj) {
_Parameters[i++].ParameterValue = o;
}
--
Paul Bacelar
MVP VC++
"Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message
news:mn.f38f7d6660a533b0.56686@vbmaf.net...
> Sébastien FERRAND a couché sur son écran :
>> Bonjour à tous...
>>
>> je cherche depuis un petit moment... mais là je sèche...
>>
>> voici une méthode :
>>
>> public virtual TDataSet SelectItem<T>(T obj) {
>> Type type = typeof(T);
>>
>> if (type.IsArray)
>> {
>> // Parcours du tableau
>>
>> }
>> else
>> {
>> _Parameters[0].ParameterValue = obj;
>> }
>> return Select();
>> }
>>
>> Comment puis-je parcourir le tableau obj ?
>>
>> Par exemple, j'appelle ma méthode ainsi :
>> SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 });
>>
>> Merci pour votre aide.
>> Sébastien
>
> Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la
> plus propre, je vous la donne pour information :
>
> public virtual TDataSet SelectItem<T>(T obj) {
> Type type = typeof(T);
>
> if (type.IsArray)
> {
> int i = 0;
> IEnumerable t = (IEnumerable)obj;
> foreach (object o in t) { // object au lieu de DateTime? :(
> _Parameters[i++].ParameterValue = o;
> }
> }
> else
> {
> _Parameters[0].ParameterValue = obj;
> }
> return Select();
> }
>
>
> Sébastien
>
> --
> ---
> Sébastien FERRAND
> Microsoft Visual C# MVP
> blog : http://blogs.developpeur.org/sebmafate
>
>
Il y a pas de spécialisation avec les génériques C# ? genre (je suis peut-être un peu rêveur?):
public virtual TDataSet SelectItem<T>(T obj){ _Parameters[0].ParameterValue = obj; }
public virtual TDataSet SelectItem<T where T : IEnumerable<U> >(T obj){ foreach (U o in obj) { _Parameters[i++].ParameterValue = o; } -- Paul Bacelar MVP VC++
"Sébastien FERRAND [MVP]" wrote in message news:
Oui Paul...
mais le problème ici, c'est que c'est le type sous-jacent de T qui m'intéresse. Ca peut être int, long, string...
foreach (DateTime o in obj) { _Parameters[i++].ParameterValue = o; } -- Paul Bacelar MVP VC++
"Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message news: > Sébastien FERRAND a couché sur son écran : >> Bonjour à tous... >> >> je cherche depuis un petit moment... mais là je sèche... >> >> voici une méthode : >> >> public virtual TDataSet SelectItem<T>(T obj) { >> Type type = typeof(T); >> >> if (type.IsArray) >> { >> // Parcours du tableau >> >> } >> else >> { >> _Parameters[0].ParameterValue = obj; >> } >> return Select(); >> } >> >> Comment puis-je parcourir le tableau obj ? >> >> Par exemple, j'appelle ma méthode ainsi : >> SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 }); >> >> Merci pour votre aide. >> Sébastien > > Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la > plus propre, je vous la donne pour information : > > public virtual TDataSet SelectItem<T>(T obj) { > Type type = typeof(T); > > if (type.IsArray) > { > int i = 0; > IEnumerable t = (IEnumerable)obj; > foreach (object o in t) { // object au lieu de DateTime? :( > _Parameters[i++].ParameterValue = o; > } > } > else > { > _Parameters[0].ParameterValue = obj; > } > return Select(); > } > > > Sébastien > > -- > --- > Sébastien FERRAND > Microsoft Visual C# MVP > blog : http://blogs.developpeur.org/sebmafate > >
Sébastien FERRAND [MVP]
bonne idée... mais malheureusement, ce n'est pas possible d'écrire ceci est C# :(
la syntaxe serait éventuellement : public virtual TDataSet SelectItem<T>(T obj) where T : IEnumerable<U> { int i = 0; foreach (U o in obj) { _Parameters[i++].ParameterValue = o; }
return Select(); }
Mais U est refusé car il doit être dans SelectItem<T, U>.
Une solution (qui fonctionne) a été proposée sur mon blog : public virtual TDataSet SelectItem<T>(params T[] obj) { for (int i = 0; i < obj.Length; i++) { _Parameters[i].ParameterValue = obj[i]; } return Select(); }
Il y a pas de spécialisation avec les génériques C# ? genre (je suis peut-être un peu rêveur?):
public virtual TDataSet SelectItem<T>(T obj){ _Parameters[0].ParameterValue = obj; }
public virtual TDataSet SelectItem<T where T : IEnumerable<U> >(T obj){ foreach (U o in obj) { _Parameters[i++].ParameterValue = o; } -- Paul Bacelar MVP VC++
"Sébastien FERRAND [MVP]" wrote in message news: > Oui Paul... > > mais le problème ici, c'est que c'est le type sous-jacent de T qui > m'intéresse. > Ca peut être int, long, string... > > Merci > Sébastien > -- > Sébastien FERRAND (MVP C#) > [http://blogs.developpeur.org/sebmafate] > > > "Paul Bacelar" a écrit : > >> foreach (DateTime o in obj) { >> _Parameters[i++].ParameterValue = o; >> } >> -- >> Paul Bacelar >> MVP VC++ >> >> "Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message >> news: >> > Sébastien FERRAND a couché sur son écran : >> >> Bonjour à tous... >> >> >> >> je cherche depuis un petit moment... mais là je sèche... >> >> >> >> voici une méthode : >> >> >> >> public virtual TDataSet SelectItem<T>(T obj) { >> >> Type type = typeof(T); >> >> >> >> if (type.IsArray) >> >> { >> >> // Parcours du tableau >> >> >> >> } >> >> else >> >> { >> >> _Parameters[0].ParameterValue = obj; >> >> } >> >> return Select(); >> >> } >> >> >> >> Comment puis-je parcourir le tableau obj ? >> >> >> >> Par exemple, j'appelle ma méthode ainsi : >> >> SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 }); >> >> >> >> Merci pour votre aide. >> >> Sébastien >> > >> > Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la >> > plus propre, je vous la donne pour information : >> > >> > public virtual TDataSet SelectItem<T>(T obj) { >> > Type type = typeof(T); >> > >> > if (type.IsArray) >> > { >> > int i = 0; >> > IEnumerable t = (IEnumerable)obj; >> > foreach (object o in t) { // object au lieu de DateTime? :( >> > _Parameters[i++].ParameterValue = o; >> > } >> > } >> > else >> > { >> > _Parameters[0].ParameterValue = obj; >> > } >> > return Select(); >> > } >> > >> > >> > Sébastien >> > >> > -- >> > --- >> > Sébastien FERRAND >> > Microsoft Visual C# MVP >> > blog : http://blogs.developpeur.org/sebmafate >> > >> > >> >> >>
bonne idée...
mais malheureusement, ce n'est pas possible d'écrire ceci est C# :(
la syntaxe serait éventuellement :
public virtual TDataSet SelectItem<T>(T obj) where T : IEnumerable<U> {
int i = 0;
foreach (U o in obj) {
_Parameters[i++].ParameterValue = o;
}
return Select();
}
Mais U est refusé car il doit être dans SelectItem<T, U>.
Une solution (qui fonctionne) a été proposée sur mon blog :
public virtual TDataSet SelectItem<T>(params T[] obj) {
for (int i = 0; i < obj.Length; i++) {
_Parameters[i].ParameterValue = obj[i];
}
return Select();
}
Il y a pas de spécialisation avec les génériques C# ?
genre (je suis peut-être un peu rêveur?):
public virtual TDataSet SelectItem<T>(T obj){
_Parameters[0].ParameterValue = obj;
}
public virtual TDataSet SelectItem<T where T : IEnumerable<U> >(T obj){
foreach (U o in obj) {
_Parameters[i++].ParameterValue = o;
}
--
Paul Bacelar
MVP VC++
"Sébastien FERRAND [MVP]" <SbastienFERRANDMVP@discussions.microsoft.com>
wrote in message news:356558A6-7D2D-4202-9122-17E725B1A8AC@microsoft.com...
> Oui Paul...
>
> mais le problème ici, c'est que c'est le type sous-jacent de T qui
> m'intéresse.
> Ca peut être int, long, string...
>
> Merci
> Sébastien
> --
> Sébastien FERRAND (MVP C#)
> [http://blogs.developpeur.org/sebmafate]
>
>
> "Paul Bacelar" a écrit :
>
>> foreach (DateTime o in obj) {
>> _Parameters[i++].ParameterValue = o;
>> }
>> --
>> Paul Bacelar
>> MVP VC++
>>
>> "Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message
>> news:mn.f38f7d6660a533b0.56686@vbmaf.net...
>> > Sébastien FERRAND a couché sur son écran :
>> >> Bonjour à tous...
>> >>
>> >> je cherche depuis un petit moment... mais là je sèche...
>> >>
>> >> voici une méthode :
>> >>
>> >> public virtual TDataSet SelectItem<T>(T obj) {
>> >> Type type = typeof(T);
>> >>
>> >> if (type.IsArray)
>> >> {
>> >> // Parcours du tableau
>> >>
>> >> }
>> >> else
>> >> {
>> >> _Parameters[0].ParameterValue = obj;
>> >> }
>> >> return Select();
>> >> }
>> >>
>> >> Comment puis-je parcourir le tableau obj ?
>> >>
>> >> Par exemple, j'appelle ma méthode ainsi :
>> >> SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 });
>> >>
>> >> Merci pour votre aide.
>> >> Sébastien
>> >
>> > Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la
>> > plus propre, je vous la donne pour information :
>> >
>> > public virtual TDataSet SelectItem<T>(T obj) {
>> > Type type = typeof(T);
>> >
>> > if (type.IsArray)
>> > {
>> > int i = 0;
>> > IEnumerable t = (IEnumerable)obj;
>> > foreach (object o in t) { // object au lieu de DateTime? :(
>> > _Parameters[i++].ParameterValue = o;
>> > }
>> > }
>> > else
>> > {
>> > _Parameters[0].ParameterValue = obj;
>> > }
>> > return Select();
>> > }
>> >
>> >
>> > Sébastien
>> >
>> > --
>> > ---
>> > Sébastien FERRAND
>> > Microsoft Visual C# MVP
>> > blog : http://blogs.developpeur.org/sebmafate
>> >
>> >
>>
>>
>>
bonne idée... mais malheureusement, ce n'est pas possible d'écrire ceci est C# :(
la syntaxe serait éventuellement : public virtual TDataSet SelectItem<T>(T obj) where T : IEnumerable<U> { int i = 0; foreach (U o in obj) { _Parameters[i++].ParameterValue = o; }
return Select(); }
Mais U est refusé car il doit être dans SelectItem<T, U>.
Une solution (qui fonctionne) a été proposée sur mon blog : public virtual TDataSet SelectItem<T>(params T[] obj) { for (int i = 0; i < obj.Length; i++) { _Parameters[i].ParameterValue = obj[i]; } return Select(); }
Il y a pas de spécialisation avec les génériques C# ? genre (je suis peut-être un peu rêveur?):
public virtual TDataSet SelectItem<T>(T obj){ _Parameters[0].ParameterValue = obj; }
public virtual TDataSet SelectItem<T where T : IEnumerable<U> >(T obj){ foreach (U o in obj) { _Parameters[i++].ParameterValue = o; } -- Paul Bacelar MVP VC++
"Sébastien FERRAND [MVP]" wrote in message news: > Oui Paul... > > mais le problème ici, c'est que c'est le type sous-jacent de T qui > m'intéresse. > Ca peut être int, long, string... > > Merci > Sébastien > -- > Sébastien FERRAND (MVP C#) > [http://blogs.developpeur.org/sebmafate] > > > "Paul Bacelar" a écrit : > >> foreach (DateTime o in obj) { >> _Parameters[i++].ParameterValue = o; >> } >> -- >> Paul Bacelar >> MVP VC++ >> >> "Sébastien FERRAND" <listes_seb[@]vbmaf.net> wrote in message >> news: >> > Sébastien FERRAND a couché sur son écran : >> >> Bonjour à tous... >> >> >> >> je cherche depuis un petit moment... mais là je sèche... >> >> >> >> voici une méthode : >> >> >> >> public virtual TDataSet SelectItem<T>(T obj) { >> >> Type type = typeof(T); >> >> >> >> if (type.IsArray) >> >> { >> >> // Parcours du tableau >> >> >> >> } >> >> else >> >> { >> >> _Parameters[0].ParameterValue = obj; >> >> } >> >> return Select(); >> >> } >> >> >> >> Comment puis-je parcourir le tableau obj ? >> >> >> >> Par exemple, j'appelle ma méthode ainsi : >> >> SelectItem<DateTime?[]>( new DateTime?[] { date1, date2, date3 }); >> >> >> >> Merci pour votre aide. >> >> Sébastien >> > >> > Bon... j'ai trouvé une solution qui fonctionne... mais ce n'est pas la >> > plus propre, je vous la donne pour information : >> > >> > public virtual TDataSet SelectItem<T>(T obj) { >> > Type type = typeof(T); >> > >> > if (type.IsArray) >> > { >> > int i = 0; >> > IEnumerable t = (IEnumerable)obj; >> > foreach (object o in t) { // object au lieu de DateTime? :( >> > _Parameters[i++].ParameterValue = o; >> > } >> > } >> > else >> > { >> > _Parameters[0].ParameterValue = obj; >> > } >> > return Select(); >> > } >> > >> > >> > Sébastien >> > >> > -- >> > --- >> > Sébastien FERRAND >> > Microsoft Visual C# MVP >> > blog : http://blogs.developpeur.org/sebmafate >> > >> > >> >> >>