Désolé les gars! Je suis tellement dans le code! que j'ai oublié de mettre les erreurs du compilateur.Interfaces avec les structures, par référence en utilisant Generics
Voici une nouvelle version du code simplifiée!
Et ce sont les erreurs:
erreur 1 Le match de la meilleure méthode surchargée pour 'IWeird.DataBase.ModifyData (ref IWeird.IDataTable)' a quelques arguments invalides
d'erreur 2 Argument '1': ne peut pas convertir de « ref IWeird.Periods » à « ref IWeird.IDataTable »
Le problème: Je ne peux pas passer par référence une interface avec un struct en elle, ce que je fais mal?
Voici le nouveau code exemple:
class PeriodsProcessor
{
public PeriodsProcessor()
{
Periods Data = new Periods();
DataBase DB = new DataBase();
Console.WriteLine(Data.Value);
DB.ModifyData(ref Data);
Console.WriteLine(Data.Value);
Console.ReadLine();
}
}
public interface IDataTable
{
string Value { get; set; }
}
public struct Periods : IDataTable
{
public string Value { get; set; }
}
public class DataBase
{
public void ModifyData(ref IDataTable data)
{
data.Value = "CHANGE";
}
}
class Program
{
static void Main(string[] args)
{
PeriodsProcessor PeriodsProcessor = new PeriodsProcessor();
}
}
Quelle erreur obtenez-vous? Erreur de compilateur (si oui, quoi)? Exception (si oui, quoi)? Ne fonctionne pas comme prévu (si oui, que fait-il)? – itowlson
Ce code compile très bien en 2010RC. Quelle erreur obtenez-vous et sur quelle ligne? – JaredPar
Les structures sont appelées "types de valeurs" car elles sont transmises par valeur, et non par référence. Si vous voulez que quelque chose soit passé par référence, passez un type de référence. Les structures mutables sont une très, très mauvaise pratique de programmation de toute façon; vous devriez idéalement ne jamais avoir un setter sur une structure. –