Cannot convert type SomeClass to 'T'

1631 단어 convert
다음 코드에 문제가 발생합니다.
public static T Protect(Func func, UserLevel pageRole) where T : ActionResult, new(){    try    {        return func();    }    catch (Exception err)    {        if (typeof(T) is JsonResult)        {            return (T)new JsonResult() ;
        }        else if (typeof(T) is ActionResult)        {            return (T)new ContentResult();        }
        throw err;    }}
Cannot convert type'Json Result'to'T'를 받으면 다음과 같이 수정해야 합니다.
return (T)(object)new JsonResult();
Well, you can always placate the compiler by adding an object cast in the middle:
geoConfigs = (T)(object)GetGeoConfigurationNumericFromDB(items, maMDBEntities);

which will defer the type-check until runtime. However! There is no compiler way to do this otherwise, as it is never going to be happy with string tests like "MamConfiguration" . Also, generics work well when the code is ... generic - i.e. does the same thing which each type. The code shown is the opposite of generic. It is non-generic code exposed through a generic API. It is always going to be messy inside. Personally I would try to avoid this usage in the first place.
또는
You should be able to just use Convert.ChangeType() instead of your custom code:
public T Get<T>(Stats type) where T : IConvertible
{
    return (T) Convert.ChangeType(PlayerStats[type], typeof(T));
}

좋은 웹페이지 즐겨찾기