2010-03-16 4 views

Répondre

2

Ajout du MetadataTypeAttribute ne sera utile lorsque vous avez écrit code personnalisé qui détecte le BrowsableAttribute. Le framework .NET ne gère pas le MetadataTypeAttribute différemment des autres attributs et ne "fusionne" pas votre type avec le type de métadonnées.

Lorsque vous avez écrit votre propre code qui détecte la BrowsableAttribute, vous pouvez le changer, il détecte également un MetadataTypeAttribute sur un type et si elle existe, vous pouvez aller à la classe de métadonnées visées à rechercher des propriétés décorées avec le BrowsableAttribute. Lorsque la logique utilisant le BrowsableAttribute n'a pas été écrite par vous (par exemple, cela fait partie du framework .NET, car il est utilisé par le concepteur Visual Studio), il n'y a aucun moyen de faire fonctionner cela.

Actuellement, il existe seulement quelques parties du framework .NET qui connaissent le MetadataTypeAttribute. MVC par exemple l'utilise pour la validation et avec .NET 4.0 DataAnnotations (qui définit l'attribut) a également un validateur. Enterprise Library 5.0 (actuellement en version bêta) détectera également cet attribut pour validation.

Alors que de plus en plus d'applications et une partie du framework peuvent gérer cet attribut, dans la plupart des cas, l'utiliser est inutile.

0

Je l'utilise pour que je puisse permettre à mes classes LINQ to SQL ont également des propriétés JSON pour faciliter désérialisation d'objets JSON:

using Newtonsoft.Json; 
using Newtonsoft.Json.Linq; 
using System.ComponentModel.DataAnnotations; 

[MetadataType(typeof(User_JsonProperties))] 
public partial class User 
{} 

public class User_JsonProperties 

{ 
    [JsonProperty("user_id")] 
    public int UserId { get; set; } 
} 

Depuis l'autre auteur ne comprend pas le code source , Je pensais que je le ferais pour que tu vois à quoi ça ressemble.