은 Microsoft Reference Source에 따르면, 당신이 참조하는 방법은 다음과 같이 구현합니다 :
public static void Requires<TException>(bool condition) where TException : Exception
{
AssertMustUseRewriter(ContractFailureKind.Precondition, "Requires<TException>");
}
당신이 볼 수 있듯이, 일반 TException
형식 매개 변수에 대한 모든 기능을 함께 없다. 이는 컴파일 후 ccrewrite.exe
이 처리하기 때문입니다. 당신의 제네릭 형식 매개 변수에 new()
제약 조건,
첫째 :
는 두 번째 질문에 관해서는, 당신은 항상 두 가지 다른 방법으로 지정된 유형의 인스턴스를 만들 수 있습니다
public static void CreateInstance<TClass>() where TClass : new()
{
TClass instance = new TClass();
// ...
}
둘째, 반사를 통해 Activator
를 사용하여 :
public static void CreateInstanceWithReflection<TClass>()
{
TClass instance = Activator.CreateInstance<TClass>();
// ...
}
후자의 방법은 당신이 예 경우에 유용합니다 진짜 유형을 아직 모르고 리플렉션을 통해 먼저 검색하려고합니다. 리플렉션을 통해 인스턴스를 생성하려면 클래스가 매개 변수없는 생성자를 제공해야합니다. 그렇지 않은 경우에는 question을 참조하십시오.