Saya memiliki antarmuka yang IResourcePolicy
berisi properti Version
. Saya harus menerapkan properti ini yang berisi nilai, kode yang ditulis di halaman lain:
IResourcePolicy irp(instantiated interface)
irp.WrmVersion = "10.4";
Bagaimana cara menerapkan properti version
?
public interface IResourcePolicy
{
string Version
{
get;
set;
}
}
Jawaban:
Di antarmuka, Anda menentukan properti:
public interface IResourcePolicy { string Version { get; set; } }
Di kelas penerapan, Anda perlu mengimplementasikannya:
public class ResourcePolicy : IResourcePolicy { public string Version { get; set; } }
Ini terlihat serupa, tetapi ini adalah sesuatu yang sama sekali berbeda. Di antarmuka, tidak ada kode. Anda cukup menentukan bahwa ada properti dengan pengambil dan penyetel, apa pun yang akan mereka lakukan.
Di kelas, Anda benar-benar menerapkannya. Cara terpendek untuk melakukannya adalah menggunakan
{ get; set; }
sintaks ini . Kompiler akan membuat sebuah field dan menghasilkan implementasi getter dan setter untuknya.sumber
Version
publik di kelas? Ahh, saya mengerti masalah saya: jika Anda mengimplementasikan Antarmuka secara eksplisit (misalnyaIResourcePolicy.Version
, Anda tidak dapat menentukan apakah itu publik.Maksudmu seperti ini?
class MyResourcePolicy : IResourcePolicy { private string version; public string Version { get { return this.version; } set { this.version = value; } } }
sumber
Antarmuka tidak boleh berisi implementasi apa pun (termasuk nilai default). Anda perlu beralih ke kelas abstrak.
sumber
Contoh sederhana menggunakan properti dalam sebuah antarmuka:
using System; interface IName { string Name { get; set; } } class Employee : IName { public string Name { get; set; } } class Company : IName { private string _company { get; set; } public string Name { get { return _company; } set { _company = value; } } } class Client { static void Main(string[] args) { IName e = new Employee(); e.Name = "Tim Bridges"; IName c = new Company(); c.Name = "Inforsoft"; Console.WriteLine("{0} from {1}.", e.Name, c.Name); Console.ReadKey(); } } /*output: Tim Bridges from Inforsoft. */
sumber
Jawaban J. Random Coder dan inisialisasi kolom versi.
private string version = "10.4';
sumber
Anda harus menggunakan kelas abstrak untuk menginisialisasi properti. Anda tidak dapat memulai di Inteface.
sumber