반응형
텍스트를 입력해서 클래스를 가져오다.
개인 프로젝트 작업 중, 매 번 형식이 다른 클래스를 읽어와야하는 상황이 생겼습니다. 내부 런타임 중에서 바뀌는 상황이기 때문에, 이를 string을 매개변수로 받아 특정 클래스에 접근하는 구현 방식이 필요한 상황이었습니다. 이에 대한 처리는 이미 .Net에서 지원하고 있습니다.
스크립트
ClassFactory.cs
using System;
public static class ClassFactory
{
public static object GetClassInstance(string className, string namespaceFullPath = "")
{
Type type = Type.GetType($"{namespaceFullPath}.{className}, Assembly-CSharp");
if (type != null)
{
object instance = Activator.CreateInstance(type);
return instance;
}
else
{
return null;
}
}
}
경우에 따라 namespace를 적어줘야합니다.
예제
public class MyClass
{
public string name;
}
private static void Main(params string[] args)
{
MyClass myClass = ClassFactory.GetClassInstance(className: "MyClass") as MaClass;
Console.WriteLine(myClass.name);
}
마무리
이러한 코드를 작성하게 되는 경우는 극히 드물지만, string으로 클래스 이름을 입력하면 가져올 수 있습니다.
참고 1: https://learn.microsoft.com/en-us/dotnet/api/system.type.gettype?view=net-7.0
참고 2: https://stackoverflow.com/questions/1825147/type-gettypenamespace-a-b-classname-returns-null
반응형
'Utils' 카테고리의 다른 글
Unity, Json 리스트 파일 저장하기 (5) | 2024.07.20 |
---|---|
C#, 폴더 및 파일 전체 복사 (0) | 2023.07.04 |
Unity, PlayerPrefs 커스텀 클래스 (오버라이딩) (0) | 2023.06.01 |
Unity, 에셋 FileID 가져오기 (0) | 2023.05.14 |
Unity, 박스 콜라이더 기즈모 (0) | 2023.05.11 |
댓글