2009-08-31 7 views
0

어떻게 작동합니까? 일반 타이핑을 사용하여 100으로 업데이트 된 결과를 얻으 려합니다. 어떤 아이디어? 물론이 기능은 완전하지는 않습니다. 계속 작업 할 수 있도록 결과 기능을 작동시켜야합니다.C# Typecast 일반 참조 매개 변수

public static bool ReadMemory<T>(Process process, IntPtr address, ref T result) 
    { 
     Type objType = result.GetType(); 

     switch (objType.Name) 
     { 
      case "Int32": 
       result = (T)100; 
       return true; 
      default: 
       return false; 
     } 
    } 
+2

? 또한 코드에서 유형을 확인할 때 제네릭 사용을 이해할 수 없습니다. – shahkalpesh

+0

shahkalpesh와 동의하십시오. 이 세상에서 당신은 실제로 여기에서 습득하려고 노력하고 있습니까? – spender

+1

실제로. 당신은 잘못하고있다. generics의 목적은 잘, * generic *이 될 것입니다. 다른 형식 인수에 대해 다른 작업을 수행해야한다면 * generic *이 아닙니다. –

답변

1

나는 실제로 이것을 리펙토링하여 결과를 반환합니다. 스위치 또는 if/else 잠금이 메소드의 맨 아래로 떨어지면 예외가 발생합니다. 그런 다음 클라이언트 코드에서 try/catch의 실패를 catch 할 수 있습니다.

0
방금 ​​유형을 speciailize 필요

:

당신이 스위치가 어떻게 많은 경우
public static bool ReadMemory(Process process, IntPtr address, ref int result) 
{ 
    result = 100; 
    return true; 
} 

public static bool ReadMemory(Process process, IntPtr address, ref float result) 
{ 
    result = 100.0f; 
    return true; 
}