|
|
|
|
Salut,
Ca fais quelques temps que j'ai débuté dans C#, et j'ai une tite questions sans doute ridicule, mais pas sans importance :
J'ai fais une classe qui regroupe une liste de propriétés, une connexion à une bdd et quelques process de mise en forme de mes propriétés... jusque la pas de pb.
Cette class est en quelque sorte les propriétés d'un doc et je l'utilise partout... et la est le pb, dans mes constructeurs d'autres class, je passe en paramètre celle ci pour remplir un champ privé du meme type et je voulais savoir si je fesais une copie des données et des objets ou si je fesais une référence... parce que certaines de mes classes utilisent en cascade celle ci et je n'est pas envi de cumuler les copies.
Merci
Configuration: XP Pro sur Dell Dimension Serveur IIS, Tomcat, PHP, MySQL et SQL Serveur Express
Bonjour,
|
Tiens voila une partie du code de ma class :
public class optExplorer
{
/// <param name="strUrl">URL du domaine</param>
/// <param name="strPath">Chemin de la base de données</param>
public optExplorer(string strUrl, string strPath)
{
this.strUrl = strUrl;
this.strPath = strPath;
oleDBCnc = new OleDbConnection();
oleDBCnc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + strPath + "\";Persist Security Info=True";
oleDBCnc.Open();
}
#region Option
private string strUrl;
private string strPath;
private OleDbConnection oleDBCnc;
/// <summary>
/// Obtient ou défini l'URL du domaine
/// </summary>
public string UrlDomaine
{
get { return this.strUrl; }
set { this.strUrl = value; }
}
/// <summary>
/// Obtient ou défini le chemin des données de stockage
/// </summary>
public string cheminData
{
get { return this.strPath; }
set { this.strPath = value; }
}
/// <summary>
/// Obtient la connexion à la base de données
/// </summary>
public OleDbConnection cnc
{
get { return this.oleDBCnc; }
}
#endregion
}
et donc je l'utilise comme ceci après : #region Variables
private optExplorer optionEploration;
#endregion
#region Constructeur
public urlExplorer(optExplorer optionEploration)
{
this.optionEploration = optionEploration;
}
#endregion |
J'aurais du mal à t'expliquer, mais en gros j'aimerai mettre des objets d'une classe abstract dans un tableau mais comme c'est une classe abstract, je peux pas faire new ClasseDeBase() afin de remplir mon tableau...
public abstract class ClasseDeBase
{
public static List<ClasseDeBase> GetAll()
{
List<ClasseDeBase> tmpList = new List<ClasseDeBase>();
List<string> tmpOldList = blabla(); // par un savant code je liste des objets
ClasseDeBase tmpObj = new ClasseDeBase(); // ça c'est impossible alors j'ai feinté (voir code à la suite)
tmpObj.Prop1 = tmpOldList;
tmpList.Add( tmpObj );
return tmpList;
}
}
Comme on peut pas instancier une classe abstract, j'ai fait comme ceci
public abstract class ClasseDeBase
{
public static List<ClasseDeBase> GetAll(ClasseDeBase newClass)
{
List<ClasseDeBase> tmpList = new List<ClasseDeBase>();
List<string> tmpOldList = blabla(); // par un savant code je liste des objets
ClasseDeBase tmpObj = newClass; // c'est ici que j'aimerai copier, pour "simuler" un NEW
tmpObj.Prop1 = tmpOldList;
tmpList.Add( tmpObj );
return tmpList;
}
}
public class Class2 : ClasseDeBase
{
public static List<Class2> GetAllClass2()
{
List<ClasseDeBase> tmpList = GetAll( (ClasseDeBase) new Class2() ); // je fais un cast pour lui envoyer un new ClasseDeBase
List<Class2> tmpListClass2 = new List<Class2>();
foreach(ClasseDeBase iBase in tmpList) // on convertit le tableau de List<ClasseDeBase> à List<Class2>
{
tmpListClass2 .Add( (Class2)iBase );
}
}
}
C'est compréhendable ? Mais s'il y a un meilleur moyen, je ne le connais pas... |
Compris :o)
|