매개 변수에서 형식 인수를 메서드로 전달하는 방법이 약간 잘못되었습니다.형식 매개 변수를 T로 변환
public class MyNamespaceXmlFormatter : XmlMediaTypeFormatter
{
public override Task WriteToStreamAsync(Type type, object value,
Stream writeStream, HttpContent content,
TransportContext transportContext, System.Threading.CancellationToken cancellationToken)
{
XElement xmloutput = XElementSerialiser.ToXElement<type>(value);
...........
나는 다음을 시도했지만 역시 실패합니다.
XElement xmloutput = XElementSerialiser.ToXElement<(T)type>(value);
XElement xmloutput = XElementSerialiser.ToXElement<typeof(type)>(value);
분명히 컴파일되지만 의미가 없습니다.
XElement xmloutput = XElementSerialiser.ToXElement<Type>(value);
유감스럽게도, 이것은 당신이 타입 인자를 취하는 정적 메소드에서 일반적인 정적 메소드를 호출하려고하는 단순한 경우 오버 헤드가 많이 발생한다. 블로그 게시물. –
무엇보다 오버 헤드가 너무 많습니까? –
여분의 클래스 측면에서 많은 오버 헤드가 작성되고 인스턴스화되고 잠재적으로 캐시되어야합니다. 나는 확실히 이것이 나쁜 해결책이라고 말하지 않고있다. 일반적인 것에서 비 제네릭 메서드를 호출하는 것과 같은 간단한 일을하는 것이 좋을 것이다. (반대로, 사소한 것에 비해) ... 잘, 단순한. –