Question

Compte tenu de la classe:

public abstract class AbstractEntity
{
    public virtual Guid Id { get; private set; }
}

public class Entity
{
    public virtual Guid Id { get; private set; }
}

Et PropertyInfo pour la propriété 'id'.

Lors de l'appel de la méthode:

PropertyInfo.GetAccessors()

Il retourne à la fois la méthode get et la méthode set lorsque la classe est pas abstrait (entité), mais seulement la méthode get lorsque la classe est abstraite (AbstractEntity).

Pourquoi est-ce? Et est-il une autre façon d'obtenir la méthode définie à partir d'une propriété avec un ensemble privé?

Était-ce utile?

La solution

Si vous voulez obtenir le MethodInfo pour l'ensemble, vous pouvez. Cela ne signifie pas que vous pouvez réellement utiliser, comme point de Kevin dans sa réponse.

Type t = typeof(AbstractEntity);
MethodInfo[] mi = t.GetProperty("Id").GetAccessors(true);

Autres conseils

Dans une classe abstraite, vous ne pouvez pas instancier. Sauf réflexion, il n'y a rien qui peut appeler le poseur privé. Dans la réflexion, vous avez encore à instancier la classe (hors éléments statiques) aux propriétés d'accès appeler des méthodes, etc., et cela ne peut être fait dans une classe abstraite. Être en mesure d'y accéder ne vous accorder quoi que ce soit, et en fait rien ne peut accéder à l'utiliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top