첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
------------------------------------------------------------------------------------------------------------------------------------------------------
728x90
728x170

■ Convert 클래스의 ChangeType 정적 메소드를 사용해 값 타입을 변환하는 방법을 보여준다.

 

▶ Convert 클래스 : ChangeType 정적 메소드를 사용해 값 타입 변환하기 예제 (C#)

using System;

string sourceValue = "10";
int    targetValue = (int)ConvertValueType(sourceValue, typeof(int));

Console.WriteLine("{0}, {1}", targetValue, targetValue.GetType());

 

▶ Convert 클래스 : ChangeType 정적 메소드를 사용해 값 타입 변환하기 (C#)

using System;
using System.ComponentModel;
using System.Globalization;

#region 값 타입 변환하기 - ConvertValueType(sourceValue, targetType, cultureInfo)

/// <summary>
/// 값 타입 변환하기
/// </summary>
/// <param name="sourceValue">소스 값</param>
/// <param name="targetType">타겟 타입</param>
/// <param name="cultureInfo">문화 정보</param>
/// <returns>타입 변환 값</returns>
public object ConvertValueType(object sourceValue, Type targetType, CultureInfo cultureInfo)
{
    if(sourceValue != null)
    {
        var sourceType = sourceValue.GetType();

        TypeConverter targetTypeConverter = TypeDescriptor.GetConverter(targetType);

        if(targetTypeConverter != null && targetTypeConverter.CanConvertFrom(sourceValue.GetType()))
        {
            return targetTypeConverter.ConvertFrom(null, cultureInfo, sourceValue);
        }

        TypeConverter sourceTypeConverter = TypeDescriptor.GetConverter(sourceType);

        if(sourceTypeConverter != null && sourceTypeConverter.CanConvertTo(targetType))
        {
            return sourceTypeConverter.ConvertTo(null, cultureInfo, sourceValue, targetType);
        }

        if(targetType.IsEnum && sourceValue is int)
        {
            return Enum.ToObject(targetType, (int)sourceValue);
        }

        if(!targetType.IsInstanceOfType(sourceValue))
        {
            return System.Convert.ChangeType(sourceValue, targetType, cultureInfo);
        }
    }

    return sourceValue;
}

#endregion
#region 값 타입 변환하기 - ConvertValueType(sourceValue, targetType)

/// <summary>
/// 값 타입 변환하기
/// </summary>
/// <param name="sourceValue">소스 값</param>
/// <param name="targetType">타겟 타입</param>
/// <returns>타입 변환 값</returns>
public object ConvertValueType(object sourceValue, Type targetType)
{
    return ConvertValueType(sourceValue, targetType, CultureInfo.InvariantCulture);
}

#endregion
728x90
그리드형(광고전용)
Posted by icodebroker
,