Tôi đang sử dụng VS 2008 và trong các trang thuộc tính của tôi cho dự án tôi thấy rằng tôi đang nhắm mục tiêu .Net 3.5.Thuộc tính tự động trong C# 3 - Phải khai báo một phần thân để nhận được nếu tôi khai báo một bộ để đặt?
Đây là lỗi tôi nhận được khi cố gắng biên dịch:
AMSDataModels.Vehicle.VIN.get' phải khai báo một cơ thể bởi vì nó không được đánh dấu trừu tượng, extern, hoặc một phần
Và đây là đoạn 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; }
}
}
Nếu tôi dải cơ thể từ bộ để nó chỉ:
public string VIN { get; set; }
Mọi công việc, nhưng tôi mất khả năng kiểm tra số VIN khi được đặt.
Có ai có đề xuất cách khắc phục sự cố này hay cách tốt hơn để tiếp cận vấn đề trong tầm tay?
Tôi thực sự thích ký pháp viết tắt - nhưng việc xác minh tính hợp pháp của đầu vào cũng quan trọng!
Nhờ tất cả mọi người đã lưu ý rằng tôi đã không thực sự thiết lập giá trị ở bất cứ nơi nào - thành thật mà nói tôi chưa tìm ra biến cục bộ mà trình biên dịch tạo ra được gọi. Có một từ khóa đặc biệt không? – Matt
Không có từ khóa đặc biệt - không có cách nào để truy cập vào công cụ được tạo tự động bởi trình biên dịch. Mà làm cho kể từ gây ra sức mạnh của mã được tạo ra là trong nó đơn giản và khả năng của trình biên dịch để biết chính xác làm thế nào nó được truy cập. Nếu bạn có thể xác định hoặc truy cập vào trường tự động, trình biên dịch không thể đưa ra gần như nhiều giả định về việc sử dụng nó. –
Bạn sẽ gặp phải vấn đề tương tự khi bạn cố gắng sử dụng INotifyPropertyChanged, vẻ đẹp của các thuộc tính tự động sẽ nhanh chóng bị mất: ( – Nate