2016-03-09 2 views
0

générique je cette classe de base:Accès méthode de classe de base en utilisant T

public class BaseEvent 
{ 
    public int EventID { get; set; } 

    public int GetEventID() 
    { 
     return EventID; 
    } 
} 

Et puis j'ai une autre classe héritée de cette base un:

public class ValidationResult<T> where T : BaseEvent 
{ 
    private void AddEventStatusUpdater(ValidationResult<T> validationResult) 
    { 
     validationResult.GetEventID(); 
    } 
} 

La question je suis d'avoir est que Je ne peux pas accéder à la méthode GetEventID() à partir de la classe de base. Je pense que cela peut arriver parce que j'utilise un T générique. Y a-t-il un autre moyen d'accéder à cette méthode?

Répondre

1
public class ValidationResult<T> where T : BaseEvent 

dit que T doit être un BaseEvent, pas que ValidationResult<T> hérite de BaseEvent. Ce serait:

public class ValidationResult<T> : BaseEvent 

Et T n'aurait aucune contrainte

Est-ce ce que vous voulez?

0

Vous avez commencé à implémenter une interface générique plutôt que d'hériter de la classe de base. Je pense que vous vouliez faire ce qui suit:

public class ValidationResult : BaseEvent 
{ 
    private void AddEventStatusUpdater() 
    { 
     var id = this.GetEventID(); 
    } 
}