나는 다음과 같은 도우미 방법이 있습니다제네릭 형식 매개 변수 없음 권투 또는 유형 매개 변수를 변환하지
public T Map<F, T>(F value, T toValue)
where T : new()
where F : new()
{
if (typeof(T).BaseType.FullName == "MyNamespace.Request")
{
toValue = MyExtensions.CreateRequest<T>();
}
else
{
toValue = new T();
}
}
:
public static T CreateRequest<T>()
where T : Request, new()
{
T request = new T();
// ...
// Assign default values, etc.
// ...
return request;
}
나는 다른 도우미에서 다른 방법의 내부에서이 방법을 사용하려면를 그런데 오류가 발생합니다 :
The type 'T' cannot be used as type parameter 'T' in the generic type or method 'MyExtensions.CreateRequest()'. There is no boxing conversion or type parameter conversion from 'T' to 'MyNamespace.Request'.
"T"유형을 캐스팅 할 수있는 방법이 있습니까? CreateRequest woul 그것을 문제없이 사용합니까?
편집 : 내가 두 가지 일을 할 수있는 알고
는 :
- CreateRequest에 제약을 풀거나
- 지도에 제약 조건을 조입니다.
하지만 CreateRequest I 사용자 클래스에서 요청 클래스의 사용자 속성을 사용할 수 없으며 두 번째 작업을 수행 할 수 없습니다. 다른 유형 (요청에서 상속받지 않음)을 Map 기능.
는 의미 "하나 또는 없음" –