2014-07-24 16 views
6

sto ottenendo questo errore da ReSharper quando aggiungo classe generica astratta inCome fermare l'errore INCORRECT_TYPE_PARAMETER_NUMBER da ReSharper 8.2.1

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

E la classe:

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

Essa riappare di tanto alla volta dopo aver fatto "Ignora questo errore" nella lista degli errori. Come liberarsene totalmente?

(v'è una questione legata al here ma non è collegato al ReSharper.)

Grazie!

+1

Hai provato: 'LegalAudit.Web.WebViewPageBase''1' o' LegalAudit.Web.WebViewPageBase' '1 [[LegalAudit.Web.ModelBase]]' Argh! così un backtick ', invece di due. Ma SO non mi permetterà di ottenere quella sintassi illuminata. – jessehouwing

+0

possibile duplicato di [Registra classe base pagina generica] (http://stackoverflow.com/questions/11711959/register-generic-page-base-class) – derigel

+0

@jessehouwing Nop, che non funziona. E ho provato 'LegalAudit.Web.WebViewPageBase <TModel>' e si interrompe con "CS1514: {atteso" in 'public class _Page_Views_Home_Index_cshtml: LegalAudit.Web.WebViewPageBase '. Finora non so come risolverlo. – Artyom

risposta

11

Fare un'altra classe non generica risolto l'errore:

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

public abstract class WebViewPageBase : WebViewPageBase<object> 
{ 

} 
+1

qualcuno potrebbe spiegare questo ... forse mi ha un collegamento a qualcosa da leggere, grazie – Seabizkit

+0

Questo non funziona in tutti i punti di vista ho gravità \t Codice \t Descrizione \t progetto: Errore \t CS0103 \t Il nome 'ViewBag' non esiste in la corrente tra molti altri errori relativi alla classe base estesa personalizzata. Non solo, ma non sono in grado di pubblicare a causa di questi errori – jwize

2

Quando aggiungo quanto segue alla web.config, l'errore va via, come previsto. Reshaper, giustamente, vuole di specificare una specifica implementazione di WebViewPageBase:

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

E

namespace MvcApplication1 
{ 
    using System.Web.Mvc; 

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

    } 
} 
+1

Grazie per la risposta. Eppure non ha aiutato. Tutte le visualizzazioni hanno rotto con errori R # come "Tipo di argomento" ... ViewModel non è assegnabile al tipo di modello "TModel" "e errori di compilazione come:" public class _Page_Views_Home_Index_cshtml: .... Web.WebViewPageBase <> [[TModel] ] ". E BTW ildasm mostra la classe come 'MvcApplication1.WebViewPageBase'1 '. – Artyom

+0

Il che ha senso, poiché 'TModel' non è lo stesso simbolo di' ... ViewModel'. Di seguito dovrebbe funzionare: MvcApplication1.WebViewPageBase'1 [[MvcAppliation1.YourBaseViewModel]]. – jessehouwing

+0

Non ho la classe base. Ho provato con un'interfaccia che alcune viste ereditano e non ha aiutato (l'errore sopra). Ad ogni modo non ho alcun vincolo per 'TModel' nel' WebViewPageBase', quindi questa non sembra una buona soluzione. AGGIORNAMENTO. E non funziona per '.. [[System.Object]]'. – Artyom