저는 "Element"라는 기본 클래스를 가지고 있고 "Solid"와 "Fluid"라는 두 개의 다른 클래스를 파생했습니다.C#의 Type 개체에서 변수에 할당 할 수있는 방법이 있습니까?
class Element
{...}
class Solid : Element
{
public const int ElemType = 2;
...
}
class Fluid : Element
{
public const int ElemType = 3;
...
}
"Element"클래스 "E1"의 인스턴스를 만들었습니다. 다음 메소드는 정수로 "ElType"과 "E1"을 인수로 취해 "Solid"또는 "Fluid"요소 (또는 나중에 소개 될 다른 "Element")로 "E1"에 할당합니다. "IElType == 2"및 "Fluid"유형이 "IElType == 3"인 경우 "E1"이 "솔리드"유형에 지정되어야하고 ... 동료가 파생되도록 할 수 있기를 원합니다. "Element"클래스에서 원하는만큼의 클래스를 만들고, "ElemType"에 적절한 값을 설정하여 프로그램이 "Element"를 인식하는지 확인하십시오. 어떤 방법이 있나요
E1 = new t1(); //Of course this is wrong!
: 여기
private static void ElemInitializer(int ElType, out Element E1)
{
E1 = new Element();
Type T1 = typeof(Element);
Type[] T2 = Assembly.GetAssembly(T1).GetTypes();
List<Type> T3=new List<Type>();
foreach (Type t1 in T2)
{
if (t1.IsSubclassOf(T1))
{
MemberInfo[] M1 = t1.GetMembers();
foreach (MemberInfo m1 in M1)
{
if (m1.Name == "ElemType")
{
FieldInfo F1 = t1.GetField("ElemType");
int int1 = (int)F1.GetValue(t1);
if (int1 == ElType)
{
// Here I want to assign to E1 as t1 type. Such as:
// E1 = new t1(); Of course this is wrong!
}
}
}
}
}
}
내가 "E1"가 "T1"유형이어야 할 문제이지만,이 같은 간단한 코드로이 작업을 수행 할 수 없습니다 "E1"을 "t1"유형으로 지정 하시겠습니까? 비 기술 영어 미안 해요.
반환 값이 없을 때 왜 out 매개 변수를 사용합니까? –