2014-03-03 2 views
0

현재 닫힌 소스 게임을 만들고 있지만 수정 기능을 제공하고 싶습니다. 특히 하나의 파일 인 StatData.cs가 있습니다. 수식 작성자에게 공개하고 싶은 수식과 통계의 사전을 저장합니다.사용자가 수정할 수있는 메서드 구현을 노출합니다.

public StatData() 
{ 
    AddDerivedStatDefinition(
     "mass",               //Key 
     "Mass",               //Printable Name 
     "Determines how much stuff there is in the thing",    //Printable Description 
     0,                //Lower Limit 
     float.MaxValue,             //Upper Limit 
     1.0f,               //Mutation Rate 
     delegate(Genome genome, BodyPlan bodyPlan, Phenotype phenotype) //delegate to be stored in DerivedStatDefinition object 
     { 
      return bodyplan.Volume * phenotype.Skin.Density;    //Formula 
     } 
    ); 

    //snipped: 700 lines worth of similar definitions... 
} 

(참고 : bodyplan.Volumephenotype.Skin.Density는이 같은 생성자에 정의 된 다른 통계를 검색 모두 접근이다

이 사전은 내가 노출하고자하는 방법 인의 StatData 생성자에서 생성되는)

설명을 노출하는 동안 제한 및 돌연변이 비율은 간단합니다 (단순한 파일이나 XML을 통해 하드 코딩하는 것이 아니라 간단히 가져올 수 있음) 수식 대리자는 더 복잡한 문제입니다.

플러그인 아키텍처를 살펴 보았지만 조금 혼란 스럽습니다. 기존 어셈블리에서 메소드를 다시 작성하지 않고 추가 어셈블리를 가져 오는 것이 었습니다. 사용자가 이미 정의 된 수식을 수정하고 추가 개체를 가져 오지 못하게하고 싶습니다. 내가 뭔가 묻는 이유는 간단합니다. :)

이 코드를 노출하기 위해 권장되는 전략은 무엇입니까?

+1

추가 어셈블리 가져 오기가 수행해야하는 작업입니다. 프로그램에서 추가 어셈블리를 가져 오면 내장 코드를 무시할 수 있습니까? 그렇지 않습니다. –

답변

0

기본 구현으로 전략 패턴을 구현하기위한 간단한 인터페이스가 필요합니까?

+1

이것은 가능한 옵션입니다.이 방법에 접근하는 방법에 대한 몇 가지 예제 코드는 좋은 대답이 될 것입니다. – aevitas

관련 문제