나는 사용자가 테스트를 실행할 수있는 응용 프로그램을 작성 중입니다. 테스트는 구성, 온도 및 벤치 마크와 같은 여러 가지 다른 개체로 구성됩니다. 설정 등은 XML간에 앞뒤로 저장됩니다. 다른 환경에서 다른 XML 문서를 다르게 구현할 수 있도록 다른 XElement를 코드에 전달합니다. 나는이 그런 짓을 할 :C#의 정적 메서드에 대한 템플릿
public abstract class BaseClass<T>
{
abstract static XElement Save(List<T>);
abstract static List<T> Load(XElement structure);
}
public class Configuration : BaseClass<Configuration>
{
public string Property1 { get; set; }
public string Property2 { get; set; }
//etc...
public static XElement Save(List<Configuration>)
{
XElement xRoot = new XElement("Root");
//etc...
return xRoot;
}
public static List<Configuration> Load(XElement structure)
{
List<BaseClass> list = new List<BaseClass>();
//etc...
return list;
}
}
public class Temperature : BaseClass<Temperature>
{
public float Value { get; set; }
public static XElement Save(List<Temperature>)
{
//save
}
public static List<Temperature> Load(XElement structure)
{
//load
}
}
[편집]
: 개정 질문 (위 기능의 변경된 서명) [/ 편집]
물론, 사실의 정적 메소드를 오버라이드 (override) 할 수 없습니다입니다 BaseClass. 이것을 접근하는 가장 좋은 방법은 무엇입니까?
가 가 가 [편집]을 다음,입니다 [/ 편집]
내가 생각할 수있는 유일한 솔루션 위의 변경 사용 목적 코드가
List<Temperature> mTemps = Temperature.Load(element);
List<Configuration> mConfigs = Configuration.Load(element);
Temperature.Save(mTemps);
Configuration.Save(mConfigs);
하는 : 나는 다음과 같은만큼 가능한 유효 싶습니다 허용되지 않음 :
왜 메서드가 정적이어야합니까? – BoltClock
Configuration 인스턴스를 만들지 않고 Configuration 목록을 저장하고 싶습니다. 이것이 가능할 수도 있지만 필요한 것은 아닌 것 같습니다. – AGuyInAPlace