C#/.NET 3.5 응용 프로그램을 개발 중이며 해당 .NET 버전에 머물고 싶습니다. 리플렉션을 사용하여이 문제를 해결하는 방법을 파악할 수 없습니다. 해결 방법을 찾았지만 "깔끔한"것은 아닙니다. 아래 코드와 같이 모든 인터페이스 구현을 찾아야하므로 앞으로 추가 인터페이스 구현을 추가 할 때 기존 코드를 변경할 필요가 없습니다.Reflection을 사용하여이 문제를 해결하는 방법 ...? (C# /. NET)
interface Ii { }
class A : Ii { }
class A1 : A { }
class A2 : A { }
class A3 : A { }
class B : Ii { }
class C : Ii{ }
// maybe in future class D : Ii { }
// maybe in future class E : Ii { }
class Helper
{
static List<Type> GetAllInterfaceImplemenations()
{// do reflection magic and return ["A1","A2","A3","B","C"] ...
// I will use this method to fill comboBox-es , create objects factory, etc...
// there should be no changes if/when in future I add class D etc.
}
}
유형을 사용하여 작업해야하므로 ArrayList를 사용하지 않아야합니다. 더 나은 사용 목록 –
CSharpie
비슷한 질문이 여기에 요청되었습니다, 당신은 내 대답을 좀 걸릴 수 있습니다 : http://stackoverflow.com/questions/13994579/how-can-i-use-reflection-or-alternative-to -create-function-calls-programatically/13994668 # 13994668 – user287107