2017-06-14 6 views
1

Mein Problem ist die Referenzen werden nicht automatisch zu meinem Code in Visual Studio 2005 hinzufügen. Es funktioniert gut in vs 2013. Aber im Jahr 2005 gibt es keinen Hinweis auf die Klasse, die Ich benutze diese Methode. Es erzeugt ein Fehler sagt „reallandtest.Entity.DeviceCommEty.Device.set‘ muss einen Körper erklären, weil es nicht abstrakt markiert ist oder extern“Referenzen werden nicht automatisch in Visual Studio 2005 hinzugefügt

using System; 
    using System.Collections.Generic; 
    using System.Text; 
    using Riss.Devices; 

    namespace reallandtest.Entity 
    { 
     public class DeviceCommEty 
     { 
      public DeviceCommEty() { } 

      public DeviceConnection DeviceConnection { get; set; } 

      public Device Device { get; set; } 

     } 
    } 
+1

Können Sie überprüfen, ob Sie immer noch die gleiche .Net Version Targeting wenn VS2005 verwenden. –

+0

Danke für die Kommentare. arbeite noch daran – Didu

+0

Entfernt meine vorherigen Kommentare, weil sie falsch waren, hatte nur ein paar Tests und googelte es ein wenig. Posted eine Antwort als Ergebnis davon. – bradbury9

Antwort

1

Es ist eine VS2005-Compiler Einschränkung ...

" automatische Eigenschaften sind eine Funktion des Compilers, nicht des Rahmens Sie Targeting. VS2013 wird nach wie vor mit automatischen Eigenschaften funktionieren, wenn die 2.0-Runtime-Net-Targeting. Allerdings wird VS2005 Ihnen nicht gibt automatische Eigenschaften. "

Quelle : https://forums.asp.net/post/3021629.aspx

Dieser Code (aufgrund der fehlenden Klassen modifiziert), für framework 2.0 sowohl in VS Targeting löst einen Fehler nur in VS2005

using System; 

namespace reallandtest.Entity 
{ 
    public class DeviceCommEty 
    { 
     public DeviceCommEty() { } 

     public DeviceConnection DeviceConnection { get; set; } 

     public Device Device { get; set; } 

    } 

    public class DeviceConnection 
    { 
    } 

    public class Device 
    { 
    } 
} 

Um es zu machen arbeiten Sie die automatischen (körperlos) Eigenschaften gereinigt weg bekommen sollte .

public class DeviceCommEty 
    { 
     public DeviceCommEty() { } 

     private DeviceConnection _deviceConnection; 

     public DeviceConnection DeviceConnection 
     { 
      get 
      { 
       return _deviceConnection; 
      } 
      set 
      { 
       _deviceConnection = value; 
      } 

    } 
+0

Danke für die help.really geschätzt. aber in obigem Code gibt es einen anderen Fehler es sagt "'DeviceConnection' ist ein mehrdeutiger Verweis zwischen 'Riss.Devices.DeviceConnection' und 'reallandtest.Entity.DeviceConnection'". – Didu

+0

Es ist der Code, den ich verwendet habe, um Ihren Fehler zu reproduzieren, es repariert es nicht ... weil es nicht behoben werden kann. Wenn Sie diesen Code im Projekt verwenden, haben Sie den Verweis auf den 'Riss.Devices'-Namespace/Assembly, es wird Ihnen diesen Fehler geben. Bitte beachten Sie, dass der VS2013 immer noch mit automatischen Eigenschaften arbeitet, wenn er auf die .Net 2.0 Runtime abzielt. Allerdings gibt VS2005 keine automatischen Eigenschaften. – bradbury9

+0

Jetzt habe ich es. Danke für die Hilfe bradbury9 – Didu

0
//Finally got it. This worked for me. 

namespace reallandtest.Entity 
{ 

    public class DeviceCommEty 
    { 
     public DeviceCommEty() { } 

     public DeviceConnection deviceConnection 
     { 
      get { return deviceConnection; } 
      set { deviceConnection= value; } 
     } 

     public Device device 
     { 
      get { return device; } 
      set { device= value; } 
     } 

    } 

} 
+0

Dies würde kompilieren, aber zur Laufzeit wird es Ihnen einen Fehler geben. Sie sollten eine private Variable deklarieren und verwenden. – bradbury9

+0

Sie haben einen rekursiven Getter deklariert, wird eine Stapelüberlaufausnahme auslösen. – bradbury9

+0

Ok, ich werde es überprüfen. Vielen Dank. – Didu

Verwandte Themen