2011-01-04 18 views
10

MVC Müzik Mağazası eğitimini izliyorum, ancak bölüm 5: Part 5'da Html Helper ile biraz uğraştım. İşte Statik tipler parametre olarak kullanılamaz

'musicStoreMVC.Helpers.HtmlHelper': static types cannot be used as parameters

benim uygulamadan kodudur:

Ben ancak aşağıdaki hatayı alıyorum ... (Ben :) yanlış varsa düzeltin lütfen) düzgün bugüne kadar bunu takip etmiş görünüyor :

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace musicStoreMVC.Helpers 
{ 
    public static class HtmlHelper 
    { 
     public static string Truncate(this HtmlHelper helper, string input, int length) 
     { 
      if (input.Length <= length) 
      { 
       return input; 
      } 
      else 
      { 
       return input.Substring(0, length) + "..."; 
      } 
     } 
    } 
} 

kimse yanlış yapıyorum görebiliyorsanız fazla bilgi gerekiyorsa, ya ben işaretçileri için minnettar olurum !! Teşekkürler.

+0

Teşekkür ekleyin! İsimler sadece çok benzer! :) – 109221793

+0

http://stackoverflow.com/questions/5858591/c-sharp-static-types-cannot-be-used-as-type-arguments –

cevap

13

Statik HtmlHelper sınıfınızı HtmlHelperExtensions'a yeniden adlandırın.

+1

Aynı sorun ama benim için çalışmıyor. Microsoft.VisualStudio.TestTools.UnitTesting.Assert 'genişletmek istiyorum. Sınıf ismini herhangi bir şeye çevirmek de aynı hatayı üretiyor ... – CallMeLaNN

+3

Anladım, çünkü "statik sınıf" eklenti yöntemleri eklenemiyor çünkü http://stackoverflow.com/questions/249222/can-i-add-extension-methods -to-an var olan statik sınıf – CallMeLaNN

1

Örnek kodda bildirdiğiniz bir statik çakışma - ve uzantı yöntemini oluşturmak istediğiniz sınıf olan System.Web.Mvc.HtmlHelper adında bir çakışma isminiz var. Sınıfınızı sadece HtmlHelpers olarak değiştirin (bağlantılı eğiticide olduğu gibi). Şu anki haliyle, işe yaramadığı varsayılan statik sınıfta bir uzatma yöntemi uygulamaya çalışıyorsunuz.

1

Bunun nedeni, uzantı sınıfınız olan HtmlHelper adınızı vermenizdir. truncate'da, yapamadığınız statik bir sınıfa bir uzantı yöntemi eklemeyi deneyin.

Basit bir çözüm, HtmlHelper ürününüzü farklı bir şeye yeniden adlandırmaktır.

1

this HtmlHelper helper o HtmlHelper üzerinde örnek yöntemi sanki Truncate() hareket etmelidir, fakat örneklerini olamaz statik sınıf olarak HtmlHelper ilan ettik söylüyor.

Yapmaya çalıştığınız şey farklı bir HtmlHelper sınıfında bir uzantı yöntemi oluşturmaksa, başkalarının önerdiği gibi bu statik sınıfı yeniden adlandırın. Statik yönteme ihtiyacınız varsa, this HtmlHelper helper parametresinden kurtulun. Yine de kullanmıyorsun.

0

kullanarak part

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

silin ve cevap herkese

using System.Web.Mvc; 
İlgili konular