2020. 11. 27. 17:07ใ์ ๊ณต ๊ณผ๋ชฉ/์๋์ฐ ํ๋ก๊ทธ๋๋ฐ
C# ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ - ์ ํธ๋ฆฌ๋ทฐํธ
์ ํธ๋ฆฌ๋ทฐํธ
- ์ด์ ๋ธ๋ฆฌ๋ ํด๋์ค, ํ๋, ๋ฉ์๋, ํ๋กํผํฐ ๋ฑ์ ๋ค์ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์ ์ฌ์ฉ
- ๋ฉํ๋ฐ์ดํฐ ํ์์ผ๋ก ์ ์ฅ๋จ.
์ ํธ๋ฆฌ๋ทฐํธ๋ ํ์ค ์ ํธ๋ฆฌ๋ทฐํธ(.NET ํ๋ ์์ํฌ ์ ๊ณต)๊ณผ ์ฌ์ฉ์ ์ ์ ์ ํธ๋ฆฌ๋ทฐํธ๊ฐ ์๋ค.
๋จผ์ ํ์ค ์ ํธ๋ฆฌ๋ทฐํธ๋ฅผ ์์๋ณด์.
ํ์ค ์ ํธ๋ฆฌ๋ทฐํธ
- Conditional ์ ํธ๋ฆฌ๋ทฐํธ
- ์กฐ๊ฑด๋ถ ๋ฉ์๋๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ
- define ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ์ ํ๋ค.
- ๋ฐ๋์ System.dianostics๋ฅผ ๋ค์์คํ์ด์ค์ ํฌํจ์์ผ์ผ ํ๋ค.
Conditional ์ ํธ๋ฆฌ๋ทฐํธ์ ์์
#define CSHARP
using System;
using System.Diagnostics;
class ConditionalAttrApp
{
[Conditional("CSHARP")]
public static void CsharpMethod()
{
Console.WriteLine("In the CSharp Method...");
}
[Conditional("JAVA")]
public static void JavaMethod()
{
Console.WriteLine("In the Java Method...");
}
public class BoundedGenericApp
{
public static void Main(string[] args)
{
ConditionalAttrApp.CsharpMethod();
ConditionalAttrApp.JavaMethod();
}
}
}
๊ฒฐ๊ณผ ํ๋ฉด
์ ์ฒ๋ฆฌ๊ธฐ์ ์๋ ๊ฒ๋ง์ด Conditional์ ์ ์ฉ์ด ๋๊ณ , ๊ทธ๊ฒ๋ง ์คํ์ด ๋๋ค.
- Obsolete ์ ํธ๋ฆฌ๋ทฐํธ
- ์์ผ๋ก ์ฌ์ฉ๋์ง ์์ ๋ฉ์๋๋ฅผ ํ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ ํธ๋ฆฌ๋ทฐํธ
- ๊ฒฝ๊ณ ๋ฅผ ํตํด ์ฌ์ฉ๋์ง ์๋ ๋ฉ์๋์์ ๊ฐ์งํ ์ ์๋ค.
Obsolete ์ ํธ๋ฆฌ๋ทฐํธ ์ฌ์ฉ ์์
class ObsoleteAttrApp
{
[Obsolete("๊ฒฝ๊ณ , Obsolete Method์
๋๋ค.")]
public static void OldMethod()
{
Console.WriteLine("In the Old Method");
}
public static void NormalMethod()
{
Console.WriteLine("In the Normal Method...");
}
}
public class Program
{
public static void Main(string[] args)
{
ObsoleteAttrApp.OldMethod();
ObsoleteAttrApp.NormalMethod();
}
}
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด OldMethod์ ๊ฒฝ๊ณ ์ค์ด ๋์์ง๋ค. ์๋ํ๋ฉด Obsolete๊ฒฝ๊ณ ๋ฉ์ธ์ง๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ์ฉ์ ์ ์ ์ ํธ๋ฆฌ๋ทฐํธ
- ํ๋ก๊ทธ๋๋จธ์ ์ํด ์ ์๋ ์ ํธ๋ฆฌ๋ทฐํธ.
- ์ด ํด๋์ค๋ System.Attribute ํด๋์ค์์ ํ์ํด์ผ ํ๋ฉฐ, ์ด๋ฆ์ ํญ์ XxxxAttribute ํํ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
์ฌ์ฉ์ ์ ์ ์ ํธ๋ฆฌ๋ทฐํธ์ ์์
public class MyAttrAttribute : Attribute
{
public MyAttrAttribute(string message)
{
this.message = message;
}
private string message;
public string Message
{
get
{
return message;
}
}
[MyAttr("This is Attribute test.")]
public class Program
{
public static void Main(string[] args)
{
Type type = typeof(Program);
object[] arr = type.GetCustomAttributes(typeof(MyAttrAttribute), true);
if (arr.Length == 0)
{
Console.WriteLine("This class has no custom attrs.");
}
else
{
MyAttrAttribute ma = (MyAttrAttribute)arr[0];
Console.WriteLine(ma.Message);
}
}
}
}
ํต์ฌ์ ์ด๋ ๋ค.
1) ์ฌ์ฉ์ ์ ์ ์ ํธ๋ฆฌ๋ทฐํธ๋ Attribute๋ฅผ ์์๋ฐ์์ผ ํ๋ค.
2) type.GetCustomAttribute๋ฉ์๋๋ ์ ํธ๋ฆฌ๋ทฐํธ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด๋ค.
'์ ๊ณต ๊ณผ๋ชฉ > ์๋์ฐ ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
C# - ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ (์ค๋ ๋) (0) | 2020.11.27 |
---|---|
C# - ๊ณ ๊ธํ๋ก๊ทธ๋๋ฐ (์์ธ) (0) | 2020.11.27 |
C# - ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ(์ ๋ค๋ฆญ) (2) | 2020.11.27 |
C# - ํ์ ํด๋์ค์ ์ธํฐํ์ด์ค(2) (0) | 2020.11.19 |
C# - ํ์ ํด๋์ค์ ์ธํฐํ์ด์ค (0) | 2020.11.19 |