제가 아주 즐겨 쓰는 기능입니다. 잘 쓰면 코딩이 아주 편리해 지죠.
this를 이용하여 static 메서드를 쓸 수 있습니다. 만약에 내가 byte 타입의 변수에 파일을 생성하는 코드를 자주 쓴다고 하면 일일이 매번 컨버젼 코드를 쓸 필요 없이 byte 타입의 정적 메서드를 만들어 주면 하나의 코드로 관리를 할 수 있는 거죠. 코드 쓰는 시간도 절약이 되고요. 쉽게 말하면 예를 들어 프로젝트 내의 전 byte 타입에 .ToFile() 이라는 나만의 메서드를 붙일 수 있다는 뜻입니다.
위의 예제로 코드를 보여드리겠습니다.
이 메서드를 안 쓰면 항상 이렇게 함수를 만들어서 매번 불러와야 하죠.
public async Task WriteFileAsync(byte[] bytes, string filePath, string fileName)
{
string destFullName = Path.Combine(filePath, fileName);
// 이미 파일이 있으면 지우기
if (File.Exists(destFullName))
File.Delete(destFullName);
await using FileStream fs =
new FileStream(
destFullName,
FileMode.CreateNew,
FileAccess.Write);
await fs.WriteAsync(bytes, 0, bytes.Length);
return;
}
this를 이용하면 이렇게 바뀝니다. Static 메서드가 되는 거죠. 왜냐하면 변수뒤에 .WriteToFileAsync() 라고 붙여져야 하니 Instantiation을 할 수가 없게 되죠.
public static async Task WriteToFileAsync(this byte[] bytes, string filePath, string fileName)
{
string destFullName = Path.Combine(filePath, fileName);
// 이미 파일이 있으면 지우기
if (File.Exists(destFullName))
File.Delete(destFullName);
await using FileStream fs =
new FileStream(
destFullName,
FileMode.CreateNew,
FileAccess.Write);
await fs.WriteAsync(bytes, 0, bytes.Length);
return;
}
어떻게 사용이 될까요? 아래의 예제와 같이 사용이 편리하게 됩니다.
byte[] imageBytes = GetImageFromDatabase();
string filePath = @"C:\path\";
string fileName = "image.jpeg";
await imageBytes.WriteToFileAsync(filePath, fileName);
아주 간단한 예제이지만 잘 활용한다면 아주 크게 도움이 됩니다.
수고하셨습니다. 즐거운 코딩되세요!
도움이 되셨거나 즐거우셨다면 아래의 ❤️공감버튼이나 구독버튼을 눌러 주세요~ 감사합니다
100% 모든 환경에 작동하는 페이지 이동 이벤트 포착 자바스크립트 코드 - JavaScript (0) | 2023.03.13 |
---|---|
Entity Framework Core - Entity Change (엔티티 체인지 하기) - C# & .NET (0) | 2023.03.06 |
Entity Framework Core - Best Practices (모범사례) - C# & .NET (0) | 2023.02.06 |
다기능 다이얼로그 박스 또는 모달 창 (Dialog Box or Modal Window) - JavaScript (0) | 2023.01.23 |
Visual Studio 성능 향상 팁 (0) | 2023.01.09 |