2017-04-17 2 views
0

나는 그와 함께 일하고 있어요 코드베이스 내가 추가해야 아래반환 유형은

using namespace.scenario1; 
... 
using namespace.scenarion; 

internal static Type GetType(string typeName) 
{ 
    switch(typeName) 
    { 
    case "class1": return typeof(class1); // namespace.scenario1.class1 
    ... 
    case "classn": return typeof(classn); 
    } 
} 

나는 새로운 클래스를 지원하려는 때마다 보이는 한 진술과 새로운 사례 진술을 사용하고 실제로 이것이 떨어져 자동화 될 수있는 것처럼 느낀다.

나는 다음과 같은 방법을 시도하지만 가끔 같은 어셈블리 이름을 설정하는 데에 대해 이야기 this one과 같은 몇 가지 게시물을 읽을 null 값
internal static Type GetType(string typeName) 
{ 
    return Type.GetType(typeName); 
} 

을 반환하지만 난 아직 방법을 잘 모르겠어요 이것을하기 위해 그리고 옳은 방향으로 팁을 감사 할 것입니다. 나는 Visual Studio가 어셈블리 이름을 알아낼 수 있다는 것을 알기 때문에 class1 의미는 namespace.scenario1.class1

고마워!

+0

왜 직접 형식 이름을 사용하지? 내 말은, 당신이'Type.GetType ("TheTypeName")을하면 ​​아무 것도하지 않고 이미 달성 할 것입니다 ... – Gusman

+0

유형의 실제 이름을 원하면 Ok, 죄송합니다. 마지막 부분을 읽지 않았습니다. GetType에서 typeof (theType) .AssemblyQualifiedName을 사용하여 전체 이름을 검색하면 어셈블리 및 네임 스페이스를 포함하는 정규화 된 이름이 반환됩니다. – Gusman

+0

@Gusman - 나는 '반환 대해서 typeof (TYPENAME) .AssemblyQualifiedName하려고 할 때,' 내가 문자열 변수입니다하지만 당신은뿐만 아니라 사용자의 특정 사건에 관련된해야 구체적인 예를 줄 수 –

답변

0
internal static Type GetType(string typeName) 
{ 
    return assembly.GetTypes().First(t => t.Name == typeName);  
    // Note: Exception occurs if it doesn't exist.  
} 
0

당신은 같은 것을 할 필요가 :

Type type = Type.GetType("Namespace.MyClass, MyAssembly"); 
+0

유형처럼 사용되는 수를 ? – EtherDragon

+0

고마워요. Zdravko - 제 질문은 자동으로 어셈블리 이름을 찾는 방법이기도합니다. 각 클래스가 자체 네임 스페이스에 속한다고 가정 할 수 있습니다. 각 case 문에 대해 하나의 어셈블리 이름을 넣어야한다면 지금 당장 그대로 유지할 수 있습니다. –

+0

네임 스페이스에 대한 같은 메모 (내 의견을 편집 할 수 없음) –

관련 문제