Ich verwende VS 2008, und auf meinen Eigenschaftenseiten für das Projekt sehe ich, dass ich auf .Net 3.5 abziele. HierAutomatische Eigenschaften in C# 3 - Muss einen Körper für get deklarieren, wenn ich einen für Satz deklariere?
ist der Fehler, den ich immer bin, wenn sie versuchen zu kompilieren:
AMSDataModels.Vehicle.VIN.get‘muss einen Körper erklären, weil es nicht abstrakt markiert ist, extern oder teilweise
Und hier ist der Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AMSDataModels
{
public class Vehicle
{
//NodeID for datastore persistance
public Guid NodeID { get; set; }
public string VIN { get;
set {
if (value.Length != 17) throw new ArgumentOutOfRangeException("VIN", "VIN must be 17 characters");
} }
public string Make { get; set; }
public string Model { get; set; }
}
}
Wenn ich den Körper von Satz Streifen, so dass seine gerade:
public string VIN { get; set; }
Alles funktioniert, aber ich verliere meine Fähigkeit, die VIN zu überprüfen, wie es eingestellt ist.
Hat jemand einen Vorschlag, wie man diesen oder einen besseren Weg, um das Problem zur Hand zu gehen beheben?
Ich mag wirklich die Kurzschreibweise - aber die Legitimität der Eingabe zu überprüfen ist auch wichtig!
Vielen Dank an alle, die bemerkt haben, dass ich den Wert nicht wirklich irgendwo gesetzt habe - ehrlich gesagt hatte ich noch nicht herausgefunden, was die lokale Variable, die der Compiler erstellt hat, genannt wurde. Gibt es ein spezielles Keyword? – Matt
Kein spezielles Schlüsselwort - es gibt keine Möglichkeit, vom Compiler auf die automatisch erzeugten Daten zuzugreifen. Was macht denn die Macht des generierten Codes ist in seiner Einfachheit und die Fähigkeit des Compilers, genau zu wissen, wie es zugegriffen wird. Wenn Sie das automatische Feld definieren oder darauf zugreifen konnten, konnte der Compiler nicht annähernd so viele Annahmen über seine Verwendung treffen. –
Sie werden auf das gleiche Problem stoßen, wenn Sie versuchen, INotifyPropertyChanged zu verwenden, die Schönheit der automatischen Eigenschaften ist schnell verloren :( – Nate