2010-09-12 9 views
1

Problème: lorsque l'objet est d'avoir:C# PropertyGrid et la propriété Interface

class A 
{ 
    public ISomeinterface PropertyName { get; set; } 
} 

puis une instance de cette classe est affectée à propertyGrid.SelectedObject = new A(); puis en essayant d'éditer la valeur de PropertyName, une exception à propos de l'échec de l'instance de ISomeinterface est montrée (bien entendu) la question est de savoir comment contourner cela sans casser mes classes et interfaces.

+0

La propriété est-elle nulle ou non nulle lors de son utilisation? –

+0

il est nul quand je l'utilise – user440850

Répondre

1

À droite, PropertyGrid n'a aucun espoir de deviner comment affecter la valeur. Ainsi, le cacher:

class A 
{ 
    [Browsable(false)] 
    public ISomeinterface PropertyName { get; set; } 
} 

Si la cession de la propriété est une exigence, alors vous aurez besoin de mettre en œuvre un UITypeEditor pour la propriété.

+0

Mais je ne comprends pas si j'ai un ISomeInterface dire [] et que j'ai A, B qui implémente cette interface, comme il ne peut pas y avoir un éditeur qui me permet d'ajouter A ou B? est-ce qu'il n'y a pas un truc pour surmonter cela? Parce que j'ai construit un éditeur et cela fonctionne mais c'est un peu redondant car il devrait être rendu automatiquement, c'est tout le point non? – user440850