2013-12-20 4 views
0

으로 반환 할 수있는 방법 먼저 혼란스러운 제목으로 불편을 끼쳐 드려 죄송합니다. 상황을 설명하기 위해 정확한 단어를 찾을 수있었습니다. 그러나 예제를 통해 이해하기 쉽습니다.변수를 "확장"하여 변수의 접두사 값을

public static class Tables 
    { 
      public const string Employees= "DBEmploy1"; 
      public const string Sales = "Sale1"; 
      (...etc) 
    } 

그리고 다음과 같이 우리의 코드에서 사용 :

string sql="select name, surname from " + Tables.Employees + " where code='1'" 

하지만 가끔은 우리가 접두사 필요

우리는이 같은 카탈로그로 테이블 이름을 보유하고 정적 클래스가 데이터베이스 연결 또는 다른 접두사/접미어를 테이블에 추가하십시오.

public static class CurrentDB1Prefix="[databasex].dbo." 

public static class Tables 
     { 
       public const string Employees= "DBEmploy1"; 
       public const string Sales = "Sale1"; 
       (...etc) 
     } 
public static class TablesP 
     { 
       public static readonly string Employees= CurrentDB1Prefix + Employees; 
       public static readonly string Sales = CurrentDB1Prefix + Sales; 
       (...etc) 
     } 

과 같은 우리의 코드에서 사용 :

string sql="select name, surname from " + TablesP.Employees + " where code='1'" 

우리가 같은 것을 할 싶습니다 2 테이블 목록을 유지하는 노력을 절약하려면 : 현재 솔루션은 두 번째 테이블 카탈로그를 선언하는 것입니다

public static class CurrentDB1Prefix="[databasex].dbo." 
public static class Tables 
{ 
        public const string Employees= "DBEmploy1"; 
        public const string Sales = "Sale1"; 
        (...etc) 
} 
public static class TablesP 
{ 
    //this would return the above Table class variables with the prefixes somehow 
    return CurrentDB1Prefix + Table.TableVariablex; 
} 

어떻게 할 수 있습니까? 아니면 이것으로 사용할 수있는 근사값입니까?

답변

1

static을 사용하지 말고 const을 사용하지 마십시오. 필드를 속성으로 변환하여 값을 런타임으로 변경 가능하게 만듭니다. 이처럼 :

중요한 것은 우리가 무엇이야 ase69s 접두사 (첫 번째 하나에 mainteinance 일)
+0

당신이 그 일을 못하게합니까? 두 번째 클래스 TablesP를 만들거나 bool applyPrefix 인수를 취하는 속성 메소드를 만듭니다. – VSP

+0

@로 얻을 접두사와 TablesP없이 테이블 이름을 얻기 위해, 테이블 2 옵션을 갖고 싶어한다는 것입니다

public class Tables { public string CurrentPrefix = ...; public string Employees { get { return CurrentPrefix + "DBEmploy1" }; //(...etc) } 
usr

+0

뭔가 semiconstant (현재 접두사는 프로그램 시작시에만 할당되며 나중에 변경되지 않습니다.) 나는 const와 같은 가장 간단한 옵션을 사용하여 두 번째 클래스에 대한 각 액세스시 계산할 필요가 없도록했습니다. 첫 번째 클래스의 각 변수가 두 번째 클래스의 해당 변수를 가짐을 확인하고자했습니다 (자식 요소를 구현하지 않으면 경고하는 인터페이스 나 인터페이스를 사용할 때처럼) – VSP