2014-07-24 8 views
6

Ich erhalte diesen Fehler von ReSharper zu stoppen, wenn ich in der abstrakten generische Klasse hinzufügenWie INCORRECT_TYPE_PARAMETER_NUMBER Fehler von ReSharper 8.2.1

<configuration> 
    <system.web.webPages.razor> 
     <pages pageBaseType="LegalAudit.Web.WebViewPageBase"> 
    ... 

Und die Klasse:

public abstract class WebViewPageBase<TModel> : WebViewPage<TModel> 
{ 
    // ... 
} 

Es kommt ab und erscheint wieder zu der Zeit, nachdem "Ignoriere diesen Fehler" in der Fehlerliste gemacht wurde. Wie man es total los wird?

(Es gibt eine verknüpfte Frage an here aber es ist nicht zu resharper verbunden.)

Dank!

+1

Haben Sie versucht: 'LegalAudit.Web.WebViewPageBase''1' oder' LegalAudit.Web.WebViewPageBase' '1 [[LegalAudit.Web.ModelBase]]' Argh! also ein Backtick 'statt zwei. Aber SO wird mir nicht erlauben, diese Syntax hervorgehoben zu bekommen. – jessehouwing

+0

möglich Duplikat von [Registrieren generische Seite Basisklasse] (http://stackoverflow.com/questions/11711959/register-generic-page-base-class) – derigel

+0

@jessehouwing Nop, das funktioniert nicht. Und ich habe versucht 'LegalAudit.Web.WebViewPageBase <TModel>' und es bricht mit "CS1514: {erwartet" an 'öffentliche Klasse _Page_Views_Home_Index_cshtml: LegalAudit.Web.WebViewPageBase '. Bisher weiß ich nicht, wie ich es beheben kann. – Artyom

Antwort

11

andere nicht generische Klasse zu machen gelöst den Fehler:

public abstract class WebViewPageBase<TModel> : WebViewPage<TModel> 
{ 
    // ... 
} 

public abstract class WebViewPageBase : WebViewPageBase<object> 
{ 

} 
+1

Könnte jemand das erklären ... Link mir vielleicht etwas zu lesen, Dank – Seabizkit

+0

Diese funktioniert nicht in allen Ansichten erhalte ich Severity \t-Code \t Beschreibung \t Projekt: Fehler \t CS0103 \t Der Name ‚ViewBag‘ existiert nicht in der aktuelle unter vielen anderen Fehlern, die sich auf die benutzerdefinierte erweiterte Basisklasse beziehen. Nicht nur das, aber ich kann wegen dieser Fehler nicht veröffentlichen – jwize

2

Wenn ich folgend zum web.config hinzufügen, der Fehler geht weg, wie erwartet. Reshaper, richtig, will man eine spezielle Implementierung von WebViewPageBase angeben:

<system.web.webPages.razor> 
    <pages pageBaseType="MvcApplication1.WebViewPageBase`1[[TModel]]"> 
    </pages> 
    </system.web.webPages.razor> 

Und

namespace MvcApplication1 
{ 
    using System.Web.Mvc; 

    public abstract class WebViewPageBase<TModel> : WebViewPage<TModel> 
    { 

    } 
} 
+1

Danke für Ihre Antwort. Aber es hat nicht geholfen. Alle Ansichten brachen mit R # -Fehlern wie "Argument type ... ViewModel 'ist nicht dem Modelltyp' TModel '" und Kompilierungsfehlern wie: "public class _Page_Views_Home_Index_cshtml: .... Web.WebViewPageBase <> [[TModel] ] ". Und BTW ildasm zeigt die Klasse wie 'MvcApplication1.WebViewPageBase'1 '. – Artyom

+0

Das ist sinnvoll, da 'TModel' nicht dasselbe ist wie '... ViewModel'. Folgendes sollte wieder funktionieren: MvcApplication1.WebViewPageBase'1 [[MvcAppliation1.YourBaseViewModel]]. – jessehouwing

+0

Ich habe keine Basisklasse. Ich habe versucht, mit einer Schnittstelle, die einige Ansichten erben, und es hat nicht geholfen (der Fehler oben). Anyway Ich habe keine Einschränkungen für 'TModel' in der' WebViewPageBase', also sieht das nicht gut Lösung. UPDATE. Und es funktioniert nicht für '.. [[System.Object]]'. – Artyom

Verwandte Themen