2017-06-01 2 views
0

J'ai deux bibliothèques différentes qui ont arbitré la bibliothèque de base appelée base.dll. Une bibliothèque utilisant pour les plates-formes Web une autre en utilisant pour la plate-forme Windows (WPF). Je dois restreindre restreindre une propriété publique dans la plate-forme WPF mais je veux y accéder dans la plate-forme Web. Comment peut-on y parvenir? J'essaie la compilation de condition mais je ne sais pas comment faire exactement. S'il vous plaît aidez-moiComment puis-je restreindre le modificateur d'accès public dans la bibliothèque référencée?

Ex: - bibliothèque de base:

public Class CommonClass{ 
    public string CssClass 
       { 
      get; 
      set; 
       } 
} 

Referenced Bibliothèque 1 (Web) - Referenced la bibliothèque de base, ont besoin d'accéder CssClass dans cette bibliothèque

bibliothèque de référence 2: (WPF) - Référencé la bibliothèque de base, besoin de restreindre CssClass dans cette bibliothèque

Répondre

1

Cela ressemble en fait à un défaut de conception. Vous créez une bibliothèque et définissez les propriétés qui doivent être accessibles aux utilisateurs de cette bibliothèque. Normalement, vous ne masquez pas les propriétés spécifiques de clients spécifiques.

Cependant, je pense que vous pouvez obtenir ce que vous voulez en faisant la propriété internal et utiliser le InternalsVisibleToAttribute dans votre base.dll:

[assembly: InternalsVisibleTo("webplatformassembly")] 

public Class CommonClass{ 
    internal string CssClass 
    { 
     get; 
     set; 
    } 
} 

De cette façon, aucun client ne peut voir que la propriété, à l'exception de ceux mentionnés dans un attribut InternalsVisibleTo .

Voir aussi: Friend Assemblies (C# and Visual Basic)