Program Tip

C #의 제네릭-인수를 사용하여 변수 유형의 인스턴스를 어떻게 만들 수 있습니까?

programtip 2020. 10. 19. 12:34
반응형

C #의 제네릭-인수를 사용하여 변수 유형의 인스턴스를 어떻게 만들 수 있습니까?


이 질문에 이미 답변이 있습니다.

제네릭 유형으로 개체를 인스턴스화하려는 제네릭 클래스가 있습니다. 형식 생성자에 대한 인수를 사용하고 싶습니다.

내 코드 :

public class GenericClass<T> where T : Some_Base_Class, new()
{
    public static T SomeFunction(string s)
    {
        if (String.IsNullOrEmpty(s))
            return new T(some_param);
    }
}

에 오류가 발생합니다.

new T(some_param)

'T': 변수 유형의 인스턴스를 만들 때 인수를 제공 할 수 없습니다.

어떻게 할 수 있습니까?


를보세요 Activator.CreateInstance. 예를 들면 :

var instance = Activator.CreateInstance(typeof(T), new object[] { null, null });

분명히 nulls를 유형의 생성자 중 하나에서 예상하는 적절한 값으로 대체합니다 .

에 대한 컴파일러 오류가 발생 cannot convert object to type T하면 다음을 포함하십시오 as T.

var instance = Activator.CreateInstance(typeof(T), 
                  new object[] { null, null }) as T;

참고 URL : https://stackoverflow.com/questions/6410340/generics-in-c-sharp-how-can-i-create-an-instance-of-a-variable-type-with-an-ar

반응형