0
에 의해 인스턴스 그룹 만들기.내가이 클래스가 있다고 가정 이름 AutoFac
특정 이름의 프로세스 개체가 이미 생성 된 경우 해당 특정 인스턴스를 반환하고 싶습니다. 내 현재 코드에서
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<ProcessObject>();
builder.RegisterType<ProcessObject>().As<IProcessObject>().;
Container = builder.Build();
var obj1 = Container.Resolve<IProcessObject>(new NamedParameter("Name", "UniqueObjectByName1"));//Does not exist, create new instance
var obj2 = Container.Resolve<IProcessObject>(new NamedParameter("Name", "UniqueObjectByName1"));//An instance with this name exists, return that instance
var obj3 = Container.Resolve<IProcessObject>(new NamedParameter("Name", "UniqueObjectByName2"));//Does not exist, create new instance
Debug.WriteLine(obj1.Equals(obj2));//this is currently returning False, I would like it to be true
Debug.WriteLine(obj1.Equals(obj3));
"사용의 샘플 코드는"나는 내 모든 ProcessObjects 추적하는 데 ProcessObject 클래스와 싱글 목록에서 정적 메서드를함으로써이 원칙을 유지한다.
public static GetInstance(string Name)
{
if (ProcessObjects.GetInstanceByName(Name) == null)
{
return new ProcessObject(Name);
}
else return ProcessObjects.GetInstanceByName(Name);
}
여전히 필요합니까, 아니면 AutoFac이 속성의 값으로 고유 한 인스턴스를 반환하는 솔루션을 제공합니까?
굉장한 솔루션! 나는 한 가지 질문 만하고, 당신의 샘플에있는 메소드는 "factory.GetInstanceByName (name);" 내 이전 메서드 "GetInstance (string Name)"과 동일합니까? 아니면 그걸 바꾸시겠습니까? – Snovva1
죄송합니다, 당시 공장 방식의 시체를보고 있었지만 다르게 이름이 붙은 것을 몰랐습니다. 당신이 부르는 것이 중요하지 않습니다. 의도는 같습니다. –