2013-03-12 4 views
0

인터페이스에 Properties를 넣으 려합니다.C# 인터페이스 속성 및 구현 클래스

class ClassA: IClassA 
{ 
    public string Id{ get; private set; } 

는 인터페이스 :

public interface IClassA 
{ 
    string Id{ get; } 
} 

이 한 손에서, 컴파일되지 않습니다, 난 속성을 가지고 클래스를 구현 적용하려면, 그래서 내가 "넣어하지 않았다
내 문제는 내가 할 경우 내가 컴파일 할 때, 인터페이스에서 "설정 내가 얻을 :

.ClassA.set' is not public. 
+4

방금 ​​코드를 새 Visual Studio 프로젝트에 복사했으며 완벽하게 컴파일됩니다. – dtb

+0

오류 메시지가 무엇입니까? –

+1

인터페이스에 닫기}가 없습니다. –

답변

1

코드가 정상적으로 보입니다. 인터페이스는 속성 getter 만 지정하므로 구현자는 getter 만 지정하면됩니다. 그들이 setter를 지정하는지, 그리고 setter가 public인지 private인지는 중요하지 않습니다. 이들 중 3 개는 지정된대로 IClassA에 유효해야합니다.

class ClassA : IClassA 
{ 
    public string Id { get; } 
} 

class ClassA : IClassA 
{ 
    public string Id { get; set; } 
} 

class ClassA : IClassA 
{ 
    public string Id { get; private set; } 
} 
+0

"속성 getter"를 의미하지 않니? –

+0

@Todd : 죄송합니다 - 적절하게 수정하려면 자유를 취했습니다 – chiccodoro

+0

NP, 분명히 너무 빨리 타이핑하고있었습니다. :) –

1

코드는 작동 :

namespace ConsoleApplication1 
{ 
    using System; 

    internal class ClassA : IClassA 
    { 
    public ClassA(string id) 
    { 
     this.Id = id; 
    } 

    public string Id { get; private set; } 
    } 

    public interface IClassA 
    { 
     string Id{ get; } 
    } 

    class Program 
    { 
    static void Main() 
    { 
     var a = new ClassA("Test"); 

     Console.WriteLine(a.Id); 

     Console.ReadLine(); 
    } 
    } 
} 

하면 컴파일러가 문제가되는 경우는, 코드의 다른 부분을 확인하거나 코드 줄을 포함하여 전체 오류 메시지를 게시 할 수 있습니다.