C # 의 기본 구성자를 호출하십시오

만약 내가 하고 싶은 게 기본 클래스 및 상속됩니다 전달하십시오 의 기본 생성자는 클래스 &solarisdvd 구성자를 상속됨 클래스, 어떻게 그래요?

예를 들어,

만약 내가 예외) 이 같은 일이 상속됩니다 클래스 i want to do.

class MyExceptionClass : Exception
{
     public MyExceptionClass(string message, string extraInfo)
     {
         //This is where it's all falling apart
         base(message);
     }
}

제가 원하는 것은 기본적으로 구체화하십시오 메시지를 전달할 수 있는 기본 idfsysobject. 구분된다.

질문에 대한 의견 (1)
해결책

다음과 같은 기본 클래스의 제대로 구성자를 수정하십시오 구성자를 도왔으매 드러났다.

public class MyExceptionClass : Exception
{
    public MyExceptionClass(string message, string extrainfo) : base(message)
    {
        //other stuff here
    }
}

단, 구성자를 안에 언제든지 할 수 있는 게 아니며 호출하십시오 메서드입니다. # 39 의 가장 큰 이유는 that& you& # 39, re getting in your call in the 구성자를 오류뿐만 바디입니다.

해설 (10)
  • 내 기본 생성자를 사용할 수 있는 방법을 호출하십시오 정적임 * 참고.
class MyExceptionClass : Exception
{
     public MyExceptionClass(string message, string extraInfo) : 
         base(ModifyMessage(message, extraInfo))
     {
     }

     private static string ModifyMessage(string message, string extraInfo)
     {
         Trace.WriteLine("message was " + message);
         return message.ToLowerInvariant() + Environment.NewLine + extraInfo;
     }
}
해설 (10)

기본 구성자를 security. 할 경우 당장 아닌 새로운 (파생됨) 클래스 해야 할 수 있으므로, 일부 데이터 조작 방법을 최적의 솔루션이라는 팩터리의 메서드입니다. 뭘 해야 할 것이 정적 메서드는 클래스에 개인 표시하시겠습니까 너회의 파생됨 구성자를 관심용 필요한 모든 작업을 수행할 것 이상 security. 구성자를 및 반품하십시오 객체에는.

public class MyClass : BaseClass
{
    private MyClass(string someString) : base(someString)
    {
        //your code goes in here
    }

    public static MyClass FactoryMethod(string someString)
    {
        //whatever you want to do with your string before passing it in
        return new MyClass(someString);
    }
}
해설 (1)

'기본' (무언가) 를 사용하는 것은 security. 기본 클래스 '이' 키워드를 사용하는 경우, 그러나 너무 구성자를

public ClassName() : this(par1,par2)
{
// do not call the constructor it is called in the this.
// the base key- word is used to call a inherited constructor   
} 

// Hint used overload as often as needed do not write the same code 2 or more times
해설 (1)
public class MyExceptionClass : Exception
{
    public MyExceptionClass(string message,
      Exception innerException): base(message, innerException)
    {
        //other stuff here
    }
}

내부 idfsysobject. 중 하나로 구성자를 전달할 수 있습니다.

해설 (0)
  • [1] 및 [레임워크 설계 가이드라인] 에서 프스코프 rules.*:

1. 사용자 정의 idfsysobject. /dev/raw/raw200 끝나는 이름을 가지고 있는 idfsysobject.

    class MyException : Exception

2. Idfsysobject. 한다는 것이다.

    public class MyException : Exception

3. 21032: 2 는 표준 구성자를 idfsysobject. 한다.]

  • 공공 파라메트리스 구성자를.
  • 공공 구성자를 한 문자열 인수를.
  • 공공 구성자를 한 구체화하십시오 및 예외 (랩 수 있기 때문에 다른 예외).
  • A 유형은 방수 및 민간 않을 경우 직렬화하지 구성자를 금지되었는지 경우 유형: 밀봉되. 따라 MSDN:

[시리얼화가 가능합니다 ()] public class 미렉세페시옹: Idfsysobject. { 공용 미렉세페시옹 () { 모든 유형별 로직, // 추가 공급 기본값입니다 메시지. }

공용 미렉세페시옹 (구체화하십시오 메시지): 베이스 (메시지) { 유형별 // 추가할 수 없다. } 공용 미렉세페시옹 (구체화하십시오 메시지를 idfsysobject. 네렉세페시옹): 베이스 (메시지를 네렉세페시옹) { 유형별 논리를 // 추가할 경우 내부 존재한다. } 금지되었는지 미렉세페시옹 (세리얼리제이션린포 정보, 스트림링콘테스트 컨텍스트로): 베이스 (정보, 컨텍스트로) { 유형별 직렬화하지 구성자를 // 구현할 수 없다. } }

또는

    [Serializable()]
    public sealed class MyException : Exception
    {
      public MyException()
      {
         // Add any type-specific logic, and supply the default message.
      }

      public MyException(string message): base(message) 
      {
         // Add any type-specific logic.
      }
      public MyException(string message, Exception innerException): 
         base (message, innerException)
      {
         // Add any type-specific logic for inner exceptions.
      }
      private MyException(SerializationInfo info, 
         StreamingContext context) : base(info, context)
      {
         // Implement type-specific serialization constructor logic.
      }
    }  

[1]: https://books.google.co.th/books? id = = = = exception% PT394&amp, dq, 액화석유가스 (lpg), pg 39d1wz598ecc&amp pt394&amp 20fxcop&amp, 소스 = = = = = fr&amp, sa, hl, 서명, ots bl&amp bo6ngdvi4f&amp dfz7uccpk_lviztvatsz2rlxpy&amp x&amp, v = q =, = 0ahukewi88-qo9mhkahuph44khvmdch8q6aeiudag # 베드 onepage&amp exception% 20fxcop&amp, f = false

해설 (0)

또한 함께 할 수 있는 조건부 확인란 구성자를 매개 변수를 좀 더 유연하게.

public MyClass(object myObject=null): base(myObject ?? new myOtherObject())
{
}

또는

public MyClass(object myObject=null): base(myObject==null ? new myOtherObject(): myObject)
{
}
해설 (1)

여기에 나열된 따라 일부 다른 답을 꽂으십시오 매개변수입니다 기본 클래스 구성자를 전달할 수 있습니다. 문의 구성자를 것이 좋다 (base class) 맨 앞에 구성자를 단축시킵니다 상속됨 구분된다.

public class MyException : Exception
{
    public MyException(string message, string extraInfo) : base(message)
    {
    }
}

난 참고로 너회의 들어 사용하는 것으로, 그래서 내가 세운 적이 없다. "'에스트레인포"' 매개변수입니다 연결 할 수 있습니다 "'에스트레인포"' 문자열 매개 변수를 "'메시지' 를 통해 idfsysobject. 속성 (것으로 보인다고 이 질문에 대한 답을 에서 무시됨 중입니다 수락됨 코드와 해당).

이것은 단순히 달성됩니다 호출하여 기본 클래스, 속성 업데이트 후 구성자를 메시지를 통해 추가 정보.

public class MyException: Exception
{
    public MyException(string message, string extraInfo) : base($"{message} Extra info: {extraInfo}")
    {
    }
}
해설 (3)
class Exception
{
     public Exception(string message)
     {
         [...]
     }
}

class MyExceptionClass : Exception
{
     public MyExceptionClass(string message, string extraInfo)
     : base(message)
     {
         [...]
     }
}
해설 (0)
public class MyException : Exception
{
    public MyException() { }
    public MyException(string msg) : base(msg) { }
    public MyException(string msg, Exception inner) : base(msg, inner) { }
}
해설 (1)