2009-04-16 41 views
3

嗨,對於所有我使用結構映射來實現依賴注入。我創建了ModelStateWrapper類來在服務層發送Model狀態,在構造函數中獲取對Controller的ModelState的引用。在bootswrapper中,我註冊了我的類型:控制器ModelState與ModelStateWrappper

ForRequestedType<ISourceService>() 
      .TheDefaultIsConcreteType<SourceService>(); 
ForRequestedType<IValidationDictionary>() 
     .TheDefaultIsConcreteType<ModelStateWrapper>(); 

我如何在此處給控制器的模型狀態引用ModelStateWrapper?

p.s.對不起,我的英語:)

回答

2

您需要提供更多的信息,但是這是我最好的猜測,你有什麼:

public class ModelStateWrapper : IValidationDictionary 
{ 
    ... 
    private readonly ModelState _modelState; 
    public ModelStateWrapper(ModelState modelState) 
    { 
      _modelState = modelState; 
    } 
    ... 
} 

如果你想通過這個變量(控制器的模型狀態情況下)到ModelStateWrapper,你幾乎可以肯定需要通過調用ObjectFactory來明確地做到這一點。

例子:

MyController : Controller 
{ 
    ... 
    public MyAction() 
    { 
     ... 
     IValidationDictionary validationDictionary = ObjectFactory 
      .With<ModelState>(this.ModelState) 
      .GetInstance<IValidationDictionary>(); 
     ... 
    } 
    ... 
} 

請參閱本文檔的詳細信息:

Passing Arguments to StructureMap at Runtime

+0

感謝您的回覆,是的,我有這種情況,我想控制器的ModelState在Bootswrapper文件設置爲IValidationDictionary,不在控制器中。我可以這樣做嗎?或者我需要設置在我自己的基礎控制器類上? – 2009-04-17 08:21:47