J'ai un avertissement au bas de mon écran:
Avertissement 1 'WindowsFormsApplication2.EventControlDataSet.Events' masque le membre hérité 'System.ComponentModel.MarshalByValueComponent.Events'. Utilisez le nouveau mot-clé si la cache était destinée. C:\Utilisateurs\monOrdinateur\Bureau\Contrôle Evénement\WindowsFormsApplication2\EventControlDataSet.Designer.cs 112 32 eventControl
Si je double-clique dessus, cela donne:
public EventsDataTable Events {
get {
return this.tableEvents;
}
Quelqu'un peut-il me dire comment se débarrasser de cela?
Votre classe a une classe de base, et cette classe de base a également une propriété (qui n'est ni virtuelle ni abstraite) appelée Events, qui est remplacée par votre classe. Si vous souhaitez le remplacer, placez le mot-clé "nouveau" après le modificateur public. PAR EXEMPLE.
public new EventsDataTable Events
{
..
}
Si vous ne souhaitez pas le remplacer, changez le nom de vos propriétés.
@wdavo est correct. Il en va de même pour les fonctions.
Si vous remplacez une fonction de base, telle que Update, dans votre sous-classe, vous avez besoin des éléments suivants:
new void Update()
{
//do stufff
}
Sans le nouveau au début de la décélération de fonction, vous obtiendrez l'indicateur d'avertissement.
Dans le code ci-dessous, Class A
implémente l'interface IShow
et sa méthode ShowData
. Class B
_ hérite de Class A
. Pour utiliser la méthode ShowData
dans Class B
, nous devons utiliser le mot clé new
dans la méthode ShowData
pour masquer la classe de base Class A
méthode et utilisez le mot clé override
pour étendre la méthode.
interface IShow
{
protected void ShowData();
}
class A : IShow
{
protected void ShowData()
{
Console.WriteLine("This is Class A");
}
}
class B : A
{
protected new void ShowData()
{
Console.WriteLine("This is Class B");
}
}