특이한 문제가 발생했습니다. 나는 동적 인 공장 프로젝트에서 일하고 있는데 나의 의도는 XML 파일을 기반으로 새로운 객체를 생성하는 것이다. Type.GetType() 프로젝트 간 가시성 문제 (Visual C#)
- 은 내가 다음과 같이 내가
Create
정적 메소드가이 추상 클래스에서public abstract class DynamicContentFactory<T, Params> where T: class where Params: DynamicParameters
이 공장의 기본 클래스에 대한 별도의 프로젝트를 가지고 내 문제는 이것이다
public static T Create(Params data)
Params
은Type
이라는 기본값으로 하나의 문자열 만 포함합니다. 나는 기본 클래스T
과 같은 네임 스페이스에 객체의 생성을 제한하려면, 그래서 다음을 수행하십시오 내 주요 프로젝트에서string namespaceStr = typeof(T).ToString(); namespaceStr = namespaceStr.Substring(0, namespaceStr.LastIndexOf('.') + 1); Type type = Type.GetType(namespaceStr + data.Type);
, 나는 특정 팩토리 클래스
public class ItemFactory : DynamicContent.DynamicContentFactory<ItemFactory, ItemParameters> { }
- 에게 있습니다
문제는
ItemFactory.Create
으로 전화하면Type.GetType
은null
을 반환합니다.ItemFactory
은 생성하려는 항목과 동일한 네임 스페이스에 있지만 기본 클래스는 다른 항목에 있습니다. 이 주위에 어떤 방법이 있습니까? Type.GetType()
의 매개 변수를typeof(T).ToString()
으로 변경하려고 시도했으나 찾을 수 있는지 테스트하지 못했습니다. 다른 방법에 대한 링크가 이미 존재하므로 내DynamicContent
프로젝트를 내 기본 프로젝트에 연결할 수 없습니다. 나는 심지어는 초기화 된 클래스의 유형을 찾을 수 없다는 어리석은 느낌
DynamicContent
프로젝트를 메인 프로젝트에 포함시키지 않고 별도의 라이브러리로 유지하는 것을 선호합니다. 클래스를 찾거나 기본 프로젝트와
DynamicContent
프로젝트에서 프로젝트를 참조 할 수 있도록이 클래스를 사용하여 초기화하려는 유형의 세 번째 프로젝트를 만들어야합니까?
BR,
-Sami는 당신이 관찰된다
고맙습니다! 그것은 공정한 비트를 명확히합니다. Assembly.GetCallingAssembly(). GetType()을 호출하여이 문제를 해결할 수 있었기 때문에 그 라인을 따라 뭔가를 발견했습니다. 우리가 T를 포함하도록 CallingAssembly를 보장 할 수 없다는 점에서 나쁘지는 않을 것 같습니다. –
동일한 이름을 가진 타입 간의 모호성 해결과 같은 네임 스페이스의 다른 기능을 잊지 마세요. – Charleh