2014-12-17 5 views
-1

ClassVersion1, ClassVersion2 및 ClassVariables와 같은 3 가지 클래스가 있습니다. ClassVariables는 Form의 다른 클래스의 도달 변수 용입니다.다른 클래스에서 동일한 속성 및 메서드를 사용하려면 어떻게해야합니까?

Ân 제 의견은 이것들입니다.

if(version == 1) 
{ 
    ClassVersion1 clss = new ClassVersion1(); 
} 
else 
{ 
    ClassVersion2 clss = new ClassVersion2(); 
} 
clss.vars.variable1 = 3; 
clss.vars.variable2=5; 
clss.DoSomething(); 

하지만 함수와 변수를 if 조건 (두 클래스가 같은 이름, 다른 클래스)으로 호출해야합니다. 나는 객체를 조건으로 만들고 상태를 벗어나고 싶다.

어떻게하면됩니까?

+0

당신은 [SO]에 BASE-CLASS 또는 인터페이스 – raiserle

+2

에 오신 것을 환영합니다 사용할 수 있습니다. 소스 코드 에서처럼 코드의 형식을 지정하십시오. 들여 쓰기는 코드를 읽고 이해하기 쉽게 만듭니다. 따라서 귀하의 질문에 대답하기가 더 쉽습니다. – Richard

답변

6

당신은 인터페이스를 사용할 수 있습니다

public interface IVersionedClass 
{ 
    int Variable1 { get; set; } 
    string Variable2 { get; set; } 
} 


public class ClassVersion1 : IVersionedClass 
{ 
    public int Variable1 { get; set; } 
    public string Variable2 { get; set; } 
} 

public class ClassVersion2 : IVersionedClass 
{ 
    public int Variable1 { get; set; } 
    public string Variable2 { get; set; } 
} 

다음과 같이 사용 :

IVersionedClass myClass; 
if(version == 1) 
{ 
    myClass = new ClassVersion1(); 
} 
else 
{ 
    myClass = new ClassVersion2(); 
} 
+0

고맙습니다. @CodeCaster 저는이 일을했지만 지금은 새로운 문제가 있습니다. 1. 'public'수정자가 유효하지 않습니다. 2. 속성, 인덱서 또는 동적 멤버 액세스는 out 또는 ref 매개 변수로 전달되지 않을 수 있습니다. ????? – CSharpCoder

+0

게시 한 코드에서 이러한 오류가 발생하지 않습니다. 인터페이스 멤버는'public' 수정자를 가지고 있지 않습니다. 어떻게 두 번째 오류가 발생했는지 모릅니다. – CodeCaster

+0

나는 '공개'변수를 변경했습니다. 내 오류 "인터페이스 멤버를 구현하지 않습니다"@ CodeCaster – CSharpCoder

관련 문제