확장 메서드는 static 메서드를 instance 메서드처럼 호출 할 수 있도록 해준다.
public static class ExtensionMethodSample { public static double Round(this double value) { return Math.Round(value); } }
//test double value = 1.7; Console.WriteLine(value.Round()); //static 메시드와 같은 식으로도 호출 가능하다. Console.WriteLine(ExtensionMethodSample.Round(value));
interface 를 확장하면 확장된 interface를 구현하는 클래스들은 부모 클래스의 정의된 메서드처럼 사용가능하다.
인터페이스 확장:
public interface IName { string FirstName { get; } string LastName { get; } } public static class NameExtensions { public static string FullName(this IName name) { return $"{name.FirstName} {name.LastName}"; } }
확장된 인터페이스 사용:
public class Member : IName { public string FirstName { get; set; } public string LastName { get; set; } } public class Worker : IName { public string FirstName { get; set; } public string LastName { get; set; } }
결과 테스트:
//test Member member = new Member { FirstName = "Member", LastName = "Lee" }; Console.WriteLine(member.FullName()); Worker worker = new Worker { FirstName = "Worker", LastName = "Lee" }; Console.WriteLine(worker.FullName());
실제 Member 와 Worker 에는 FullName() 메서드는 없다.
interface 확장으로 class 수정 없이 기능을 확장 할 수 있다.
댓글 없음:
댓글 쓰기