728x90
반응형
728x170
▶ Convert 클래스 : ChangeType 정적 메소드를 사용해 지정 타입으로 변환하기 예제
if(ChangeType<int>("10", out int value1))
{
Console.WriteLine(value1);
}
if(ChangeType<int?>("20", out int? value2))
{
Console.WriteLine(value2 == null ? "NULL" : value2.ToString());
}
▶ Convert 클래스 : ChangeType 정적 메소드를 사용해 지정 타입으로 변환하기
#region 타입 변경하기 - ChangeType<TTarget>(sourceValue, targetValue)
/// <summary>
/// 타입 변경하기
/// </summary>
/// <typeparam name="TTarget">타겟 타입</typeparam>
/// <param name="sourceValue">소스 값</param>
/// <param name="targetValue">타겟 값</param>
/// <returns>처리 결과</returns>
public bool ChangeType<TTarget>(object sourceValue, out TTarget targetValue)
{
Type targetType = typeof(TTarget);
if(IsNullableType(targetType) && (sourceValue == null || sourceValue == DBNull.Value))
{
targetValue = default(TTarget);
return true;
}
Type underlyingType = Nullable.GetUnderlyingType(targetType) ?? targetType;
try
{
if(underlyingType == typeof(Guid))
{
if(sourceValue is string)
{
sourceValue = new Guid(sourceValue as string);
}
if(sourceValue is byte[])
{
sourceValue = new Guid(sourceValue as byte[]);
}
targetValue = (TTarget)Convert.ChangeType(sourceValue, underlyingType);
return true;
}
targetValue = (TTarget)Convert.ChangeType(sourceValue, underlyingType);
return true;
}
catch(Exception)
{
targetValue = default(TTarget);
return false;
}
}
#endregion
#region Nullable 타입 여부 구하기 - IsNullableType(sourceType)
/// <summary>
/// Nullable 타입 여부 구하기
/// </summary>
/// <param name="sourceType">소스 타입</param>
/// <returns>Nullable 타입 여부</returns>
private bool IsNullableType(Type sourceType)
{
return sourceType.IsGenericType && sourceType.GetGenericTypeDefinition() == typeof(Nullable<>);
}
#endregion
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON/.NET6] DateTime 구조체 : 특정 요일의 다음 날짜 구하기 (0) | 2022.07.02 |
---|---|
[C#/COMMON] 누겟 설치 : Costura.Fody (0) | 2022.06.26 |
[C#/COMMON/.NET6] Array 클래스 : Resize 정적 메소드를 사용해 배열에서 특정 요소 삭제하기 (0) | 2022.06.25 |
[C#/COMMON/.NET6] 속성 값 할당 가능 여부 구하기 (0) | 2022.06.25 |
[C#/COMMON/.NET6] Nullable 타입 여부 구하기 (0) | 2022.06.25 |
[C#/COMMON/.NET6] Enum 클래스 : Parse<T> 정적 메소드를 사용해 문자열로 열거형 값 구하기 (0) | 2022.06.24 |
[C#/COMMON/.NET6] Enum 클래스 : TryParse 정적 메소드를 사용해 문자열로 열거형 값 구하기 (0) | 2022.06.24 |
[C#/COMMON/.NET6] Enum 클래스 : Parse 정적 메소드를 사용해 문자열로 열거형 값 구하기 (0) | 2022.06.24 |
[C#/COMMON/.NET6] String 클래스 : Split 정적 메소드를 사용해 CSV 문자열을 List<T> 타입으로 변환하기 (0) | 2022.06.24 |
[C#/COMMON/.NET6] String 클래스 : Split 정적 메소드를 사용해 CSV 문자열을 List<T> 타입으로 변환하기 (0) | 2022.06.24 |
댓글을 달아 주세요