2013-02-06 3 views
0

j'ai eu une fonction qui est essentiellement cette méthode:Documentation XML à une fonction

/// <summary>Extracts the parent id.</summary> 
/// <param name="nameEntities">The name entities.</param> 
/// <param name="tcdMakeId">The TCD make id.</param> 
/// <returns>Parent Id.</returns> 
public Nullable<int> ExtractParentId(IEnumerable<NameEntity> nameEntities, int childId) 
{ 
    /* Do some Extraction here */ 
} 

Dans la méthode, il n'y a pas de problème du tout d'ajouter belle documentation XML pour le paramètre et ainsi de suite. Mais existe-t-il un moyen de le faire avec une fonction? L'Intellisense de mon collègue ne lui donne que Arg1, Arg2.

La fonction serait:

private Func<IEnumerable<NameEntity>, int, Nullable<int>> ExtractParentId 
{ 
    get 
    { 
     return this._extractParentId = this._extractParentId ?? 
      new Func<IEnumerable<NameEntity>, int, Nullable<int>>((nameEntities, childId) => 
      { 
       /* Do some Extraction here */ 
      }); 
    } 
} 

Eh bien, je sais que ce n'est pas un parfait exemple, mais je ne peux pas poster le code réel ici (d'entreprise:/et moyen de long), mais c'est basiquement un version rayée.

Merci tout à fait beaucoup, Marc

+1

ce n'est pas une fonction. c'est une propriété en lecture seule –

+0

Demandez-vous "J'ai une propriété de type' Func ', puis-je lui donner une documentation XML pour qu'intellisense affiche les mêmes détails pour la propriété que s'il s'agissait d'une méthode normale?" – PCB

Répondre

1

Il me semble un peu comme vous essayez de réinventer la roue Déléguer:

/// <summary> 
/// 
/// </summary> 
/// <param name="nameEntities"></param> 
/// <param name="childID"></param> 
/// <returns></returns> <!--etc--> 
private delegate Nullable<int> ExtractParentIdDelegate(IEnumerable<int> nameEntities, int childID); 

/// <summary> 
/// 
/// </summary> 
private ExtractParentIdDelegate FuncExtractParentId 
{ 
    get 
    { 
     return this._extractParentId = this._extractParentId ?? new ExtractParentIdDelegate(delegate(IEnumerable<int> nameEntites, int childID) 
                    { 
                      // 
                    }); 
    } 
} 
+1

Vous savez, en Allemagne, nous avons l'impression de "manquer la forêt pour les arbres". Shurly simplement en faire un délégué résout le problème! – marcjohne

1

Plutôt que d'utiliser le délégué générique Func<...>, déclarer un particulier Déléguez le type pour cette propriété et placez la documentation dans la définition de délégué. Ensuite, la propriété affichera la documentation pour le délégué. C'est là que le Arg1, Arg2 que vous avez vu proviennent - la documentation pour le Func<R,S,T>.

Par exemple, essayez ceci:

/// <summary> 
    /// Using Func<int,int,int>, we get generic documentation 
    /// </summary> 
    public Func<int,int,int> UsingFunc{ get; } 

    /// <summary> 
    /// Example of a delegate with XML documentation as if it was a method. 
    /// </summary> 
    /// <param name="left">Left operand</param> 
    /// <param name="right">Right operand</param> 
    /// <returns>Whatever it returns</returns> 
    public delegate int CustomDelegate(int left, int right); 

    /// <summary> 
    /// Using a custom delegate to get full documentation. 
    /// </summary> 
    public CustomDelegate UsingCustomDelegate{ get; } 
+0

Comme je l'ai dit obove ... J'ai dû avoir beaucoup de sommeil. Le délégué est ce que je cherchais! – marcjohne

Questions connexes