C# 4의 동적 키워드는 이전에 불가능했던 제네릭 작업을 허용합니까?

StackOverflow https://stackoverflow.com/questions/1630729

  •  06-07-2019
  •  | 
  •  

문제

그만큼 dynamic C# 4의 키워드는 이전에는 불가능했던 개체 작업을 위한 새로운 방법을 소개합니다.이것이 제네릭과 어떻게 겹치나요?특히 현재 합법적이고 유효한 잠재적으로 유용할 수 있는 작업이 있습니까?

예를 들어, 지금은 불가능합니다.

// Use a type whose value is known only at runtime.
Type t = ...;
List<t> l = new List<t>();
// ... (add some items to the list)
t first = l[0];

비슷한 일을 한 번 성취할 수 있는 방법이 있나요? dynamic 사용할 수 있습니다?

도움이 되었습니까?

해결책

여기서는 동적이 별로 도움이 되지 않습니다.당신은 여전히 ​​​​사용해야합니다 Type.GetGenericTypeDefinition()/MakeGenericType() 처음에는 객체를 만드는 것이 즐겁지 않습니다.

내가 올바르게 이해한다면, 일단 그런 식으로 유형을 구성하면 동적으로 작업하기가 더 쉬워질 것입니다.예를 들어, 컴파일러가 그렇지 않더라도 어떤 유형의 목록이 있다는 것을 알고 있습니다.따라서 해당 목록을 동적 변수에 할당했다면 다음과 같은 작업을 수행할 수 있습니다. .Add() 메서드와 호출은 런타임에 해결되어야 합니다.

하지만 저는 아직 개인적으로 이 게임을 해본 적이 없으므로 직접 시도해 보기 전까지는 이것은 단지 소문일 뿐입니다.

다른 팁

당신은 지금 그것을 할 수 있지만, 당신은 정말로 그것을 원해야합니다. 관찰하다:

Type t = ...;
typeof(List<>)
    .MakeGenericType(t)
    .GetMethod(...);

제네릭과 반사 : 함께 더 나은 것이 아니라 필요하다면 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top