c \ # 단일 대상 의 인 스 턴 스 반사

object obj = null;
if (classItem.BaseType.Name == "Singleton`1")
{
	obj = classItem.BaseType.GetProperty("Instance").GetValue(null);
}
else
{
	obj = Activator.CreateInstance(classItem);
}

반사 생 성 인 스 턴 스 입 니 다. 가장 많이 사용 되 는 것 은 플러그 인 을 불 러 올 때 입 니 다.이 클래스 가 단일 모드 라면 Create Instance 를 사용 하면 인 스 턴 스 의 인 스 턴 스 를 직접 호출 하지 않 고 다시 만 듭 니 다.분명히 단일 호출 해 야 할 곳, 데이터 가 일치 하지 않 는 상황 이 발생 할 수 있다.
인 스 턴 스 인 스 턴 스 인 스 턴 스 를 반사 적 으로 호출 하 는 방법 을 알 아야 한다.
 
단일 템 플 릿 을 다음 과 같이 가정 합 니 다.
//          https://www.cnblogs.com/zhouzl/archive/2019/04/11/10687909.html
public abstract class Singleton where T : class
{
    //       5   ,             
    class Nested
    {
        //        ,  2  true          
        internal static readonly T instance = Activator.CreateInstance(typeof(T), true) as T;
    }
    private static T instance = null;
    public static T Instance { get { return Nested.instance; } }
}


좋은 웹페이지 즐겨찾기