나는 반대 의견 접근을하고 그것을하지 않습니다 말할 것이다. 지금까지 게시 된 최고의 솔루션 (과부하 중 하나에 대해 FileInfo 또는 Uri와 같은 대체 유형 사용)은 나에게 조금 해킹 된 것 같습니다. 최소한의 놀라움의 원칙에 어긋납니다.
파일 이름없이 내용 만 사용하여 구성 할 수 있다면 파일 이름이 반드시 필요한 것은 아닙니다. 마찬가지로 파일 이름만으로 구성 할 수 있다면 콘텐츠가 필수적인 것은 아닙니다. 예를 들어 나중에 누락 된 파일 이름/콘텐츠를 나중에 설정할 수 있습니다.
이
MyObject myObject = new MyObject(fileName);
myObject.Content = ...
MyObject myObject = new MyObject(content);
myObject.FileName = ...
대신 싸울려고 노력의 가장 중요한 (다음 예제 파일 이름) 인 것으로 당신의 매개 변수 중 하나를 선택하고 다음과 같이 두 constructurs를 만들 : 속성을 설정하여
public MyObject(string fileName) : this(fileName, null)
{
}
public MyObject(string fileName, string content)
{
... implementation
}
하나 또는 두 매개 변수에 대해 합리적인 경우 널 (null)이 전달되도록 할 수 있습니다. 그리고 당신은 적절하다면 적어도 하나는 null이 아니라고 주장 할 수 있습니다
public MyObject(string fileName, string content)
{
if (fileName == null && content == null) throw new ArgumentException(...);
...
}
즉,이 같은 제한을 피해 갈 해킹을 사용하지 마십시오.
출처
2011-02-15 06:38:04
Joe
문자열 유형 중 하나를 자체 클래스로 감싸고 대신 해당 유형을 매개 변수로 사용하십시오. –
@Cody Grey : 안녕하세요, 그 장점이 답이라고 생각합니다. –
마크 바이어스 (Mark Byers)가 제공 한 솔루션이이 경우 가장 좋은 솔루션이라고 생각하기 때문에 답변으로 게시하지 않았습니다. (나는 그 대신 하나를 upvoted.) 대신 작업을 수행 할 수있는 유형이 내장되어있는 경우 추가 래퍼 클래스를 만들 필요가 없습니다. 좀 더 일반적인 응용 프로그램의 경우, 제 제안은 아마도 갈 방법입니다. –