SORU
2 HAZİRAN 2010, ÇARŞAMBA


Genel TryParse

Kullanan genel bir uzantısı oluşturmak için çalışıyorum 'TryParse' eğer bir dize belirli bir türü için kontrol edin

public static bool Is<T>(this string input)
{
    T notUsed;
    return T.TryParse(input, out notUsed);
}

bu olamaz sembol gidermek olarak derlemek olmaz'' . TryParse

Anladığım kadarıyla, '' herhangi bir arabirim bir parçası değil. TryParse

Bütün bunları yapmak mümkün mü?

Güncelleme:

Buldum aşağıda cevapları kullanarak:

public static bool Is<T>(this string input)
{
    try
    {
        TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(input);
    }
    catch
    {
        return false;
    }

    return true;
}

Oldukça iyi çalışıyor ama bu şekilde istisnalar kullanarak bana doğru gelmiyor bence.

Update2:

Değiştirilmiş kullanım jenerik yerine: tür geçirilecek

public static bool Is(this string input, Type targetType)
{
    try
    {
        TypeDescriptor.GetConverter(targetType).ConvertFromString(input);
        return true;
    }
    catch
    {
        return false;
    }
}

CEVAP
2 HAZİRAN 2010, ÇARŞAMBA


TypeDescriptor sınıfı kullanmanız gerekir:

public static T Convert<T>(this string input)
{
    var converter = TypeDescriptor.GetConverter(typeof(T));
    if(converter != null)
    {
        //Cast ConvertFromString(string text) : object to (T)
        return (T)converter.ConvertFromString(input);
    }
    return default(T);
}

elbette bu dönüşüm yakala/denemek istiyorum, böylece başarısız olursa, bir özel durum oluşturur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • androidandme

    androidandme

    10 Mart 2009
  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • PamtheBlamofficial

    PamtheBlamof

    31 Aralık 2010