2013-03-04 8 views
0

J'utilise CodeDOM pour compiler un fichier * .cs basé sur le serveur SQL. Ainsi, le code compilé devrait être la classe d'entité de la table particulière. J'ai réussi à compiler la classe en classes publiques, internes ou d'interface.Comment créer une classe privée en utilisant CodeDOM?

Ex.

public class SomeThing(){} 

ou

internal class Something(){} 

Mais le problème est qu'il n'y a pas d'attributs pour faire la classe en utilisant une CodeDOM privée. Y a-t-il un moyen de faire le travail?

J'ai utilisé ce code comme mon modèle http://msdn.microsoft.com/en-us/library/ms404245(v=vs.100).aspx

+0

Que se passe-t-il si vous utilisez 'TypeAttributes.NestedPrivate'? Notez qu'une classe privée * doit * être une classe imbriquée. –

+0

Sauf si vous voulez créer une classe imbriquée comme Jon l'a noté, à qui pensez-vous pouvoir voir cette classe 'private'? En quoi cela différerait-il de 'internal'? –

+0

TypeAttributes.NestedPrivate a effectué le travail. Merci. – Irshad

Répondre

1

Les classes privées de niveau supérieur n'ont pas beaucoup de sens car elles seraient invisibles aux autres types. Les classes imbriquées sont autorisées à être privées.

Voici un extrait de C# spec langue:

3.5.2 domaines d'accessibilité

Le domaine d'accessibilité d'un type T non fixé de niveau supérieur (§4.4.3) qui est déclaré dans un programme P est défini comme suit:

  • Si l'accessibilité déclarée de T est publique, le domaine de l'accessibilité des T est le texte du programme de P et tout programme qui fait référence
  • P. Si l'accessibilité déclarée de T est interne, le domaine de l'accessibilité des T est le texte du programme de P.

A partir de ces définitions, il suit que le domaine de l'accessibilité d'un type non fixé de haut niveau est toujours au moins le texte du programme dans lequel ce type est déclaré. Le domaine d'accessibilité pour un type T construit est l'intersection du domaine d'accessibilité du type générique non lié T et des domaines d'accessibilité des arguments de type A1, ..., AN.

Le domaine d'accessibilité d'un membre imbriqué M déclaré dans un type T dans un programme P est défini comme suit (en notant que M lui-même peut peut-être un type):

  • Si l'accessibilité déclarée M est public, le domaine d'accessibilité de M est le domaine d'accessibilité de T.
  • Si l'accessibilité déclarée de M est protégée interne, soit D l'union du texte de programme de P et le texte de programme de tout type dérivé de T, qui est déclaré en dehors de P. Le domaine d'accessibilité de M est t l'intersection du domaine d'accessibilité de T avec D.
  • Si l'accessibilité déclarée de M est protégée, soit D l'union du texte de programme de T et du texte de programme de tout type dérivé de T. Le domaine d'accessibilité de M est l'intersection du domaine d'accessibilité de T avec D.
  • Si l'accessibilité déclarée de M est interne, le domaine de l'accessibilité de M est l'intersection du domaine de l'accessibilité des T avec le texte du programme de P.
  • Si l'accessibilité déclarée de M est privé, le domaine de l'accessibilité des M est le texte du programme de T.
+0

Cela m'a appris un point. Merci. – Irshad

0

Et le TypeAttributes NotPublic?

+0

Cela devrait être un commentaire pas une réponse .. –

+0

C'est l'attribut de classe interne. – Irshad

Questions connexes