리플렉션을 통해 캐스트 연산자를 가져 와서 호출 할 수 있습니까? 그게 주된 질문입니다. 그렇다면 문제가 해결됩니다.리플렉션을 통해 명시 적 캐스트 연산자 가져 오기
그러나 누군가가 다음에 다른 해결책을 알고있는 경우 :
을 나는 많은 개체 (런타임까지 알 수없는 수량) 바르가, 각각 다른 유형을 가지고 있지만 그들 모두가 숫자 (더블, INT, 짧은) .
다른 한편으로는, 나는 동일한 수의 double vars를 가지고 있으며 값을 각각 비교할 필요가 있습니다.
object[] Value1; //this can be double, short or int, only known at runtime.
double[] Value2;
//I need simply to do:
(for int i = 0; i < Value1.Length, i++)
{
(if Value1[i] == Value2[i]) //here's the problem
//the comparison always return false, because of different types
....
나는 반사를 통해 호출 "은 compareTo"방법을 포함하여, 여러 가지 일에 tryed했지만, 그것은 드 객체 바르 호출 방법을 포함하는 인스턴스의 같은 종류의 것을 요구한다. (double에서 호출하여 int 매개 변수를 전달하거나 int에서 호출하여 double 매개 변수를 전달할 수 없음)
따라서 캐스팅 할 수있는 경우 : 한 가지 방법은 double에서 알 수없는 유형 d는 약간의 리플렉션을 사용해야합니다.) 다른 방법은 객체에서 알 수없는 유형으로의 2 단계 캐스팅이고, 그로부터 2 단계 캐스팅입니다.
제한 :
동적 외부 불변의 방법에서 옵션 (오래된 프레임 워크)
값 1 항목은 "개체로"개별적으로 제공되지 않습니다.
알려지지 않은 점 : Value1 항목은 다른 어셈블리 방식에서 가져온 것입니다. int 형, short 형 또는 double 형의'as object' 값을 반환합니다. 그래서 Value1에 단순히 넣을 수는 없습니다. 두 배로 물체를 던지려고하는 것과 같을 것입니다. –
@Daniel에서 Value1의 값 (Value1 자체가 아닌)이 기존 메서드에서 나온 경우 double, shorts 및 int에 'Convert.ToDouble (value)'을 사용하여 두 배로 만들 수 있습니다. 그런 다음 Value1은 단순히 Tim이 제안한대로 double [] 형식 일 수 있습니다. – Ruben
고마워요 @ 루벤 귀하의 제안에 대한 답변을 업데이트했습니다. –