سؤال

أحاول حقن الأشياء في صفحة عرض مخصصة (طراز ViewPage ، من MVCContrib)

public class ValidatedModelViewPage<T> : ModelViewPage<T> where T : class
{
    public ValidatedModelViewPage(IEnumerable<IBehavior<IMemberElement>> elementBehaviors)
       : base(elementBehaviors.ToArray()) { }
}

وتسجيلات AUTOFAC الخاصة بي تبدو هكذا:

builder.RegisterCollection<IBehavior<IMemberElement>>().As<IEnumerable<IBehavior<IMemberElement>>>();
builder.Register<NotNullBehavior>().MemberOf<IEnumerable<IBehavior<IMemberElement>>>();
builder.Register<StringLenghBehavior>().MemberOf<IEnumerable<IBehavior<IMemberElement>>>();

builder.RegisterGeneric(typeof(ValidatedModelViewPage<>));

لكنني أحصل على هذا الخطأ عندما أحاول الوصول إلى طريقة العرض:

Compiler Error Message: CS1729: 'UKFS.Web.Views.ValidatedModelViewPage<UKFS.Data.Entities.Skadeanmälan>' does not contain a constructor that takes '0' arguments

Source Error:

Line 194:        private static object @__fileDependencies;
Line 195:        
Line 196:        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
Line 197:        public views_skadeanmälan_edit_aspx() {
Line 198:            string[] dependencies;


Source File: c:\Users\Carl\AppData\Local\Temp\Temporary ASP.NET Files\root\be9ddc15\a84d5058\App_Web_edit.aspx.b2d4184a.thgwih90.0.cs    Line: 196 

كنت جاهلًا ، لكنني نظرت بعد ذلك إلى app_web_edit.aspx.b2d4184a.thgwih90.0.cs ووجدت هذا:

Line 190:      public class views_skadeanmälan_edit_aspx : UKFS.Web.Views.ValidatedModelViewPage<Skadeanmälan>, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler {
Line 191:          
Line 192:          private static bool @__initialized;
Line 193:          
Line 194:          private static object @__fileDependencies;
Line 195:          
Line 196:          [System.Diagnostics.DebuggerNonUserCodeAttribute()]
Line 197:          public views_skadeanmälan_edit_aspx() {

بطبيعة الحال ، فإن فئة الفئة التي تم إنشاؤها _skadeanmälan_edit_aspx ترث من ukfs.web.views.validatedModelViewPage ، وعندما تحاول مثاله مع البناء الافتراضي .. هل يمكنك حلها؟

هل كانت مفيدة؟

المحلول

لن تكون قادرًا على حقن البناء في صفحات العرض لأن برنامج التحويل البرمجي ASPX ينشئ CTOR فارغًا ولأنه مستمد من فئة الأساس الخاصة بك ، يجب أن يكون لدى الفئة الأساسية أيضًا CTOR فارغ.

كنت أبحث عن حقن الممتلكات بدلاً من ذلك ، وإلا حاول تحقيق ما يلي:

  • ابحث عن المكان الذي يتم فيه إنشاء صفحات العرض ، واحصل على Autofact هناك لتشكيل الصفحة
  • احصل على برنامج التحويل البرمجي ASPX لعدم إنشاء CTOR الفارغ

لا أعرف كيف أفعل هذه الأشياء ، لذلك أهدف إلى حقن الممتلكات بدلاً من ذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top