티스토리 뷰
C#은 Custom Attribute를 통해 meta data 형식으로 데이터 관리가 가능하다.
디바이스를 관리하는 IDevice 클래스와 이를 상속 받은 DeviceIPhone. 그리고 이 DeviceIPhone에서 관리하는 각 Device에 대하여
Custom Attribute를 통해 다루어 보자.
[SupportVendor("Apple")]
[SupportModel("IPhone8", true)]
[SupportModel("IPhoneX", false)]
class DeviceIPhone : IDevice
{
...
}
우선 위처럼 사용한다. 그러기 위해선 SupportVendor과 SupportModel에 대한 Custom Attribute가 정의돼 있어야 한다.
[AttributeUsage(AttributeTargets.Class)]
public class SupportVendor : Attribute
{
public string Vendor { get; set; }
public SupportVendor(string vendor)
{
Vendor = vendor;
}
}
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class SupportModel : Attribute
{
public string Model { get; }
public bool SupportHomeButton { get; }
public SupportModel(string model, bool supportHomeButton)
{
this.Model = model;
this.SupportHomeButton = supportHomeButton;
}
}
위와 같이 생겼음.
그리고 이 값을 사용하는 방법은 아래와 같다.
public new static bool IsSupport(string model, string vendor)
{
// compare Vendor
var attVendors = (SupportVendor[])typeof(DeviceIPhone).GetCustomAttributes(typeof(SupportVendor), false);
if (attVendors.Length <= 0)
return false;
if (vendor != attVendors[0].Vendor)
return false;
// compare Model
var attModels = (SupportModel[])typeof(DeviceIPhone).GetCustomAttributes(typeof(SupportModel), false);
foreach(var att in attModels)
{
if (att.Model == model)
return true;
}
return false;
}
이런식으로 접근해서 쓴다.
'Language > C#' 카테고리의 다른 글
[C#] 다차원 배열과 가변 배열, 그리고 가변 배열 초기화 하기 (0) | 2018.05.04 |
---|
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- db
- database
- Cloud
- android
- linux
- algorithm
- 음악
- source
- jni
- NDK
- java
- Python
- jni강좌
- MFC
- 안드로이드
- API
- driver
- C++
- 리눅스
- gcc
- Troubleshooting
- Visual C++
- Quiz
- AWS
- winapi
- C
- kering
- 프로그래밍
- 드라이버
- it
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함