2012-09-29 4 views
0

나는 (비 - 유도) 구조체를 에뮬레이트하고 동일한 공용 인터페이스를 가지고 (이벤트)
기능을 추가하는 의미가있어 클래스를 가지고 있지만, 일부 돌연변이 사건에 대한 내부 코드.
클래스를 에뮬레이트하는 구조체를 예상하는 함수에이 클래스를 전달해야하지만, 너무 느리기 때문에 boxing/unboxing을 피할 필요가 있습니다.재 해석

에뮬레이트 된 구조체가 내 제어하에 있지 않고 인터페이스에서 파생되지 않은 경우 내 함수를 받아들이려면 어떻게해야합니까? 내 클래스는 public function/members/syntax과 완전히 같습니다.


구체 예 :

XNA GraphicsDevice.DrawUserPrimitives 함수 IVertexType '(S)의 어레이에 대해 요청한다.
때때로 List.ToArray()를 호출하여 함수 전체가 System.Array 유형 입력을 원하기 때문에 전체 복사본을 만들어야하는 경우가 종종 있습니다. 목록은 배열과 동일한 구문 및 기능을가집니다. 함수가 입력 클래스를 받아들이면 어떤 문제도 발생하지 않습니다.

+2

여기 마법의 요정 먼지가 있습니다. 이를 코드에 뿌리면 원하는 것을 성취 할 수있는 유일한 방법입니다. :) – jalf

+0

'List'와'Array'는 다른 (그러나 유사한) 문법과 기능을 가지고 있습니다. 'DrawUserPrimitives' 내에서 배열의 내부 사용은 블럭 사본, 고정 된 배열 길이 등을 이용할 수 있습니다. 당신이'List.ToArray' 호출을 피하고자한다면 당신은 당신 자신의 디자인을 변경해야합니다. –

+0

@ChrisSinclair 잘 함수는 배열을 취하므로 꼭지점을 배열로 저장해야합니다. 데이터가 휘발성이어서 목록으로 저장 했으므로 어떻게해야합니까? – Griffin

답변

1

IVertexType을 구현하고 IVertexType [] 배열을 사용할 수없는 이유는 무엇입니까? 이 구현하는 구조체가 있으면 구조체를 래핑하고 구조체 값을 반환하여 구현을 작성할 수 있습니다.

+0

개별 꼭지점의 동작이 아니라 myType []의 동작을 변경하려고합니다. 배열에서 파생 된 클래스에서 래핑을 시도했지만 함수는이를 가져 가지 않습니다. – Griffin