티스토리 뷰
주석의 코드화
코딩을 하다보면, 단순히 코드 말고 주석 등과 같은 정보를 추가하고 싶을 때가 있다.
그런데 이러한 정보를 주석과 달리 컴퓨터도 읽을 수 있게 하고 싶다고 하면 어떨까?
그 중 한가지가 바로 Attribute 이다.
Attribute에 대한 내용은 우리의 친구 MSDN에 잘 설명 되어 있다.
https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/attributes
Obsolete
아마 나를 포함하여 많은 사람들이 맨 처음 Attribute를 접한 경로이지 않을까 싶다. 가장 대표적인 Attribute로
일반적인 레거시 모듈에서 지금은 더이상 사용하지 않거나, 추후 삭제 예정인 클래스에 이 특성을 표시한다. 그러면 아래 예제와 같이 이를 빌드하는 모든 개발자가 볼 수 있도록 Terminal에 로그를 남겨 준다.
[Obsolete("Refrigerator is obsolete. Use Fridge instead.")]
public class Refrigerator
{
public string Model { get; set; } = string.Empty;
}
public class Fridge
{
public string Model { get; set; } = string.Empty;
}
class Program
{
static void Main(string[] args)
{
var fridge = new Refrigerator() { Model = "금성냉장고" };
Console.WriteLine($"{fridge.Model}");
var fridge2 = new Fridge() { Model = "LG냉장고" };
Console.WriteLine($"{fridge2.Model}");
}
}
사용자 지정 Attribute
사용자 지정 Attribute를 사용하기 위해서는 아래와 같이 Attribute를 상속받아 만들 수 있다.
[System.AttributeUsage(System.AttributeTargets.Class|System.AttributeTargets.Struct)]
public class AuthorAttribute : System.Attribute
{
private string name;
public double version;
public AuthorAttribute(string name)
{
this.name = name;
version = 1.0;
}
}
예시
아래는 Attribute를 사용할 수 있는 대상이다.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
사실은 Obsolete 말고도 Serializable 같은 유용한 기존의 Attribute들이 있다.
시간 날때 마다 찾아보고 다채롭게 코딩하면 좋을 거 같다.
'Computer Engineering > C#(.Net)' 카테고리의 다른 글
[C#] 7.0 문법 - 튜플 필드의 이름 주기 (0) | 2022.06.22 |
---|---|
[C#] 직렬화를 이용하여 Deep Copy하기 (0) | 2022.06.15 |
[C#] string 과 StringBuilder (0) | 2022.04.13 |
[C#] VScode에서 C# 콘솔 어플리케이션 만들기 (0) | 2022.04.05 |
[C#] 'Call by value' vs 'Call by reference' (함수 호출 방식) (0) | 2022.04.05 |