public static void Main() { StaraMetoda(); } [Obsolete("Przestarzała metoda użyj NowaMetoda")] public static void StaraMetoda() { //ciało starej metody } public static void NowaMetoda() { //ciało nowej metody }
warning CS0618: 'Aplikacja1.Program.StaraMetoda()' is obsolete: 'Przestarzała metoda użyj NowaMetoda'Atrybut obsolete został zastosowany do metody o nazwie StaraMetoda(), atrybut ten jest stosowany do tych części programu, które nie są już używane. Bardzo często stosowanym atrybutem jest atrybut Serializable, który pozwala na zapis (w naszym przypadku klasy) do pliku na dysku.
[Serializable] public class Program { public string pole1 = "pole1"; public int pole2 = 12; //ciało klasy } class Wykonaj{ public static void Main() { Program p = new Program(); Console.WriteLine(SerializeToXml(p)); Console.ReadLine(); } static string SerializeToXml(Program p) { StringWriter writer = new StringWriter(); XmlSerializer serializer = new XmlSerializer(typeof(Program)); serializer.Serialize(writer, p); return writer.ToString(); } }
public class Testowa { public int pole1; } public class Wykonaj { public static void Main() { Assembly assembly = Assembly.GetExecutingAssembly(); Type[] typ = assembly.GetTypes(); int i = 0; foreach (Type t in typ) { Console.WriteLine(t.ToString()); i++; } Console.ReadLine(); } }Program zwraca nazwy typów dostępnych w aktualnie wykonywanym programie. Mechanizm refleksji ma bardzo szerokie zastosowanie, dlatego nie sposób opisać wszystkich dostępnych metod. Ponieważ mechanizm refleksji działa w czasie pracy programu i nie jest wcześniej kompilowany działa dużo wolniej niż wywoływanie zwykłych metod. Z refleksji należy korzystać tylko, gdy jest to konieczne. W kolejnych rozdziałach zostanie opisane słowo kluczowe dynamic, które ma dużo wspólnego z mechanizmem refleksji.