SORU
4 HAZİRAN 2009, PERŞEMBE


Ama uygulandığı 'uygulama durumuna diyor',

(Birkaç saat dün bu sorun ile savaşarak geçirdim, işte bu bu isteyen herkes için ekliyorum bu yüzden herhangi bir çözüm burada veya başka bir yerde bulamamıştım.)

Bizim test makinesi üzerinde çok garip bir hata var. Hata:

System.TypeLoadException: Method 'SetShort' in type 'DummyItem' from assembly 'ActiveViewers (...)' does not have an implementation.

Ben sadece anlayamıyorum. SetShort DummyItem sınıfta bile sadece dağıtım/sürüm bir sorun değil emin olmak için olay günlüğüne yazar ile bir sürümü çekirdekler ettim. Garip olan şey, arama kodunu bile SetShort yöntem aramıyor.

CEVAP
4 HAZİRAN 2009, PERŞEMBE


NOTEğer bu cevap size yardımcı değilse, lütfen insanlara bu yana eklenen diğer cevapları kaydırmak için zaman ayırın.

Kısa cevap

Bu durum oluşabilir eklemek için bir yöntem için bir arabirim bir derleme, ve sonra bir uygulama sınıfta başka bir derleme, ama yeniden uygulama derleme olmadan başvuru yeni sürüm arayüzü derleme.

Bu durumda, Dummyİtem başka bir derlemesinden bir arabirimi uygular. SetShort yöntemi son zamanlarda arayüzü ve Dummyİtem de eklendi - ama derleme içeren Dummyİtem arayüzü Meclisi önceki sürüm başvuran yeniden inşa edildi. SetShort yöntemi etkili bir şekilde yok, ama sihirli sos arabirimi ile eşdeğer yöntemi bağlamadan.

Uzun cevap

Eğer bu üreyen denemek istiyorsanız şunları deneyin:

  1. Sınıf kitaplığı projesi oluşturun: İnterfaceDef, sadece bir sınıf ekleyin ve inşa:

    public interface IInterface
    {
        string GetString(string key);
        //short GetShort(string key);
    }
    
  2. İkinci sınıf kütüphanesi projesi oluşturmak: Uygulama (ayrı çözüm), InterfaceDef.dll proje dizini içine kopyalayın ve başvuru dosyası ekleyin, sadece bir sınıf ekleyin ve inşa:

    public class ImplementingClass : IInterface
    {
        #region IInterface Members
        public string GetString(string key)
        {
            return "hello world";
        }
    
    
    
    //public short GetShort(string key)
    //{
    //    return 1;
    //}
    #endregion
    
    }

  3. Üçüncü oluşturmak, proje konsolu: ClientCode, proje dizini içine iki DLL kopyalama, dosya başvurularını ekleyin ve Main yöntemi aşağıdaki kodu ekleyin:

     IInterface test = new ImplementingClass();
     string s = test.GetString("dummykey");
     Console.WriteLine(s);
     Console.ReadKey();
    
  4. Konsol diyor kod çalıştıktan sonra, "Merhaba Dünya"

  5. İki dll projelerde kod Yorumsuz ve iki DLL ClientCode geri projeye yeniden kopyalayın, yeniden ve yeniden çalıştırmayı deneyin. Durumuna İmplementingClass oluşturmaya çalışırken oluşur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • edwin maldonado

    edwin maldon

    28 Mart 2009
  • SegaAmerica

    SegaAmerica

    5 Mart 2008
  • technodromeband's channel

    technodromeb

    28 NİSAN 2011