유형 매개 변수에서 일반 클래스를 만드는 방법이 있습니까?유형 매개 변수의 일반 클래스
public class SomeClass
{
public Type TypeOfAnotherClass { get; set; }
}
public class OneMoreClass
{
}
public class GenericClass<T>
where T : class
{
public void DoNothing() {}
}
public class GenericClass
{
public static GenericClass<T> GetInstance<T>(T ignored)
where T : class
{
return new GenericClass<T>();
}
}
내가 원하는 것은 형식에서 GenericClass을 만드는 것입니다 :
나는 이런 식으로 뭔가가있다. 예 : 여기
var SC = new SomeClass();
SC.TypeOfAnotherClass = typeof(OneMoreClass);
var generic = GenericClass.GetInstance(SC.TypeOfAnotherClass);
Assert.AreEqual(typeof(GenericClass<OneMoreClass>), generic.GetType());
나는 GenericClass<OneMoreClass>
의 인스턴스를 얻을 것으로 예상하지만 나는 또한 해당 유형의 인스턴스를 사용하여 시도 GenericClass<Type>
를 얻을. 예 :
var generic = GenericClass.GetInstance(Activator.CreateInstance(SC.TypeOfAnotherClass));
내가
GenericClass<object>
를 얻을이 시간이 작업을 수행 할 수있는 방법이 있나요?
얼마나 느린가요? – Gabe
@Gabe - 리플렉션을 사용했을 때의 성능 저하를 보여주기 위해 필자의 대답에 더 많은 것을 추가했습니다. – CodingWithSpike
"느림"은 "2 마이크로 초 걸립니다"를 의미합니다. 초당 수천 번만 수행하면 꽤 빠르지 만 수백만 번 수행해야하는 경우에는 너무 느립니다. – Gabe