Aby uniknąć sytuacji, w której musimy przy wdrożeniu usuwać spore ilości kodu, możemy skorzystać z atrybutu warunkowego. Oznaczone w nim metody będą wołane tylko w przypadku, gdy zdefiniowane jest makro z warunku, w przeciwnym przypadku kod programu przeskoczy wywołanie, a Visual Studio wyszarzy miejsce, w którym wołana jest taka funkcja.
Niespełnienie warunku i tak spowoduje wkompilowanie metod w assembly, co można łatwo sprawdzić przez mechanizm refleksji.
using System; using D = System.Diagnostics; namespace ConditionalAttribute { public class Person { public string Name { get; set; } public string Surname { get; set; } [D.Conditional("DEVELOP")] public void Print() { Console.WriteLine("Person"); } public void FullName() { Console.WriteLine(Name + " " + Surname); } } }
#define DEVELOP using System; namespace ConditionalAttribute { class Program { static void Main(string[] args) { var person = new Person(); person.Name = "John"; person.Surname = "Doe"; var type = typeof (Person); foreach (var m in type.GetMethods()) { Console.WriteLine(m.Name); } Console.WriteLine(""); person.Print(); person.FullName(); Console.ReadLine(); } } }
Brak komentarzy:
Prześlij komentarz