Kiedy powinienem używać atrybutu w C#?
Widziałem kilka przykładów atrybutu utilize, np. (jako mapa dla dynamic factory) http://msdn.microsoft.com/en-us/magazine/cc164170.aspx
Zastanawiam się, jaka jest zaleta używania atrybutu? I can find the reference on http://msdn.microsoft.com/en-gb/z0w1kczw (VS. 80). aspx nie jestem jednak pewien, kiedy i dlaczego powinienem spróbować go użyć.
5 answers
W. NET Framework, atrybuty mogą być używane z wielu powodów - jak
-
Definiowanie, które klasy są serializable
-
Wybór metod ekspozycji w serwis internetowy
Attributes
pozwól nam dodać descriptions
do klas, właściwości i metod w czasie projektowania, które mogą być następnie badane w czasie wykonywania przez reflection.
Rozważ ten przykład:
Powiedzmy, że masz klasę, która ma metodę ze starszej wersji, która jest wciąż w użyciu z jakiegokolwiek powodu i teraz wymyśliłeś nową wersję klasy, która fantastycznie wykorzystuje Generic List i LINQ i ma nową metodę do podobnego celu. Chcesz, aby deweloperzy preferowali nową wersję dostępną w późniejszej wersji twojej Biblioteki. Jak to zrobisz ? Jednym ze sposobów jest zapisanie w dokumentacji. Lepszym sposobem jest użycie atrybutu w następujący sposób.
public class AccountsManager
{
[Obsolete("prefer GetAccountsList", true)]
static Account[] GetAccounts( ) { }
static List<Account> GetAccountsList( ) { }
}
Jeśli podczas kompilacji programu używana jest Metoda obsolete
, programista otrzymuje te informacje i decyduje odpowiednio.
AccountManager.GetAccounts() jest przestarzałe: preferuj GetAccountsList
Możemy również tworzyć i dodawać Custom Attributes
zgodnie z wymaganiami.
Odniesienie:
Hope this helps
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-27 20:06:32
Moje zalecenie: używaj atrybutów do przedstawiania faktów dotyczących mechanizmów, ale nie do modelowania aspektów swojej domeny biznesowej.
Więcej Szczegółów:
Http://blogs.msdn.com/ericlippert/archive/2009/02/02/properties-vs-attributes.aspx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-19 16:30:06
Atrybuty są odpowiednie, gdy chcesz dołączyć metadane do klas lub członków klasy, a także gdy stosujesz wspólne zachowanie bez konieczności implementowania określonego interfejsu dla każdej jednostki, która dzieli to zachowanie. Ten ostatni jest przykładem programowania zorientowanego na aspekt .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-19 09:26:37
Uznaj atrybut za metadane dotyczące metody lub właściwości, do których należy. To mówi coś więcej o członku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-19 09:26:35
. NET Framework predefiniuje i używa typów atrybutów do kontrolowania zachowania aplikacji w czasie wykonywania.
Rozważ atrybut [webmethod], podczas wykonywania framework rozwiązuje ten atrybut i określa, że ta metoda będzie wystawiona na działanie usługi webservice.
W ten sam sposób można zapisać własne atrybuty, aby kontrolować zachowanie aplikacji w czasie wykonywania. Atrybuty mogą kierować klasy, metody, właściwości, delegat, enum, Zdarzenie, pole...
Aby rozwiązać atrybut w czasie wykonywania musisz użyć reflection.
Aby uzyskać więcej informacji, sprawdź link MSDN .Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-19 09:25:47