을 만들 수 있습니 IOC 컨트롤을 사용합니다.NET 에 배치 웹 프로젝트?
-
03-07-2019 - |
문제
나는 현재의 라이브러리 UserControls 내가 사용하는에서 많은 우리의 웹 응용 프로그램입니다.나를 업데이트하고 싶은 이러한 컨트롤 그래서 사용할 수 있는 IOC 하는 데 도움이 별도 논리입니다.
그래서 나는 것 같은 웹 페이지에서 자체:
<prefix:ControlName ID="myControl" runat="server" property="value1" />
및 제어가 생성자 유사:
public ControlName (IControlLogic logic)
다음 방 IOC 컨테이너를 취급할 것입니다 주입입니다.할 수 있습니까?그렇다면 무엇 라이브러리를 제공합 이?링크가 있는 경우에는 당신은 당신이 알고있는 이에 대해 그들은 좋은 것 감사합니다.
사전에 감사합니다
해결책 3
불행하게도 없다 하나의 이 질문에 대한 답변,많은 IOC 컨테이너를 포함하는 일부의 구현을 주입하 제어 속성 하는 방법은 없(현재)의 실제 만들기 제어없이 변 생성자입니다.
다른 팁
뉴욕 ASP.NET 하지 않는 것을 지원하기 쉬운 공장을 만들에 대한 패턴 제어합니다.그러나,3.5 당신은 매우 세밀한 제어를 통해 실제 코드는 ASP.NET 런타임을 생성합니다.aspx 파일입니다.
단순히 적용[ControlBuilder(...)]특성을 모든 컨트롤는 당신이 원하는 구성에 의해 컨테이너입니다.서브 클래스 ControlBuilder 과 재정의 ProcessGeneratedCode 대체 생성자를 호출하여 귀하의 컨테이너입니다.
여기에 간단한 예제:
public class ServiceProviderBuilder : ControlBuilder
{
public override void ProcessGeneratedCode(System.CodeDom.CodeCompileUnit codeCompileUnit, System.CodeDom.CodeTypeDeclaration baseType, System.CodeDom.CodeTypeDeclaration derivedType, System.CodeDom.CodeMemberMethod buildMethod, System.CodeDom.CodeMemberMethod dataBindingMethod)
{
// search for the constructor
foreach (CodeStatement s in buildMethod.Statements)
{
var assign = s as CodeAssignStatement;
if (null != assign)
{
var constructor = assign.Right as CodeObjectCreateExpression;
if (null != constructor)
{
// replace with custom object creation logic
assign.Right = new CodeSnippetExpression("("+ ControlType.FullName + ")MyContainer.Resolve<" + ControlType.BaseType.FullName + ">()");
break;
}
}
}
base.ProcessGeneratedCode(codeCompileUnit, baseType, derivedType, buildMethod, dataBindingMethod);
}
}
[ControlBuilder(typeof(ServiceProviderBuilder))]
public partial class WebUserControl1 : System.Web.UI.UserControl
{
public WebUserControl1()
{
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
예,당신이 할 수있는 좋은 당신 spring.net
http://www.springframework.net/doc-latest/reference/html/springair.html
나는 확실하지 않는 경우에 당신을 유지하려면 정렬 아이디어는 당신이 제안한다.
개인적으로 난 사용 spring.net 고 nHibernate 함께 있지만(을 피하는 최대 절전 모드 템플릿은 현재 제공하는)하는 환상적으로 작동하다.net MVC 베타 물건입니다.
용 Spring.net 을 처리하 nHibernate 약간 줄어 구성 항목 및 MVC 사용하지 않는 컨텍스트 xml 당신이해야(springair 좋은 예를 들어).
행운을 빕