मैं वीएस 2008 का उपयोग कर रहा हूं, और प्रोजेक्ट के लिए मेरे प्रॉपर्टी पेजों में मैं देखता हूं कि मैं लक्ष्यीकरण कर रहा हूं। नेट 3.5।सी # 3 में स्वचालित गुण - अगर मैं सेट के लिए घोषित करता हूं तो एक निकाय घोषित करना चाहिए?
:AMSDataModels.Vehicle.VIN.get 'एक शरीर घोषित करना चाहिए, क्योंकि यह सार चिह्नित नहीं है, निर्वासन, या आंशिक
यहाँ त्रुटि मैं जब संकलन करने की कोशिश कर रहा हो रही है
और यहाँ कोड है: अगर मैं सेट से शरीर पट्टी
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; }
}
}
इसलिए इसकी सिर्फ इतना है कि:
public string VIN { get; set; }
सभी काम करता है, लेकिन मैं सेट होने के बाद वीआईएन की जांच करने की अपनी क्षमता खो देता हूं।
क्या किसी के पास इस समस्या को हल करने के लिए या बेहतर तरीके से पहुंचने का एक बेहतर तरीका है?
मुझे वास्तव में शॉर्टंड नोटेशन पसंद है - लेकिन इनपुट की वैधता की पुष्टि करना भी महत्वपूर्ण है!
उन सभी लोगों के लिए धन्यवाद जिन्होंने ध्यान दिया है कि मैं वास्तव में कहीं भी मूल्य निर्धारित नहीं कर रहा था - ईमानदारी से मुझे अभी तक यह पता नहीं लगा था कि संकलक स्थानीय चर क्या बना रहा था। क्या कोई विशेष कीवर्ड है? – Matt
कोई विशेष कीवर्ड नहीं - कंपाइलर द्वारा ऑटो जेनरेट की गई सामग्री तक पहुंचने का कोई तरीका नहीं है। जो तब से उत्पन्न होता है, जेनरेट कोड की शक्ति इसकी सादगी में है और संकलक की क्षमता को यह जानने के लिए कि वास्तव में इसका उपयोग कैसे किया जाता है। यदि आप ऑटो फ़ील्ड को परिभाषित या एक्सेस करने में सक्षम थे तो संकलक इसके उपयोग के बारे में लगभग कई धारणाएं नहीं कर सका। –
जब आप INotifyPropertyChanged का उपयोग करने का प्रयास करते हैं, तो आप उसी समस्या में भाग लेंगे, स्वचालित गुणों की सुंदरता जल्दी से खो जाती है :( – Nate