C# 문법관련 질문입니다.

제가 추가사항이 생겨서 조건문을 쓰게 되었는데요

class Test 
{
   public method()
   {
      if (type==1)
      {
              ClassType1 vari = new ClassType1();;
      }
      else
      {
              ClassType1 var2 = new ClassType2();;         
      }
   }
}

이렇게 하였습니다. 문제는

class Test
{
    public method()
    {
        if (type==1)
        {
            ClassType1 vari = new ClassType1();;
        }
        else
        {
            ClassType1 var2 = new ClassType2();;
        }
        return "varx".innerMothod(); // ClassType1, 2 모두 같은 기능의 메소드입니다.
    }
}

이럴 때 “varx” 부분이 오류가 나더군요 저런 경우 다른 분들은 어떤식으로 사용하는지요?

일단 코드 가독성부터 해결해주시면 좋겠습니다.

2개의 좋아요
public MyDelegate Foo(MyEnum e)
{
	IMyClass c = e switch
	{
		MyEnum.A => new MyClassA(),
		MyEnum.B => new MyClassB(),
	};

	return c.MyMethod();
}

특정한 인터페이스를 구현하는 복수의 클래스를 대상으로 열거형 값에 따라 메서드를 반환받으려면 위와 같은 방식으로 하시면 될 듯합니다.

1개의 좋아요

윗글이 수정이 안되서 ㅠㅠ 여기다 씁니다.

제가 추가사항이 생겨서 조건문을 쓰게 되었는데요

class Test
{
     public method()
     {
        if (type==1)
        {
             ClassType1 vari = new ClassType1();;
        }
        else
        {
            ClassType1 var2 = new ClassType2();;
        }
    }
}

이렇게 하였습니다. 문제는

class Test
{
public method()
{
if (type==1)
{
ClassType1 vari = new ClassType1();;
}
else
{
ClassType1 var2 = new ClassType2();;
}
return “varx”.innerMothod(); // ClassType1, 2 모두 같은 기능의 메소드입니다.

}
}

이럴 때 “varx” 부분이 오류가 나더군요 저런 경우 다른 분들은 어떤식으로 사용하는지요?

예 감사합니다.

같은 기능을 갖는 메서드라면 추상화를 도입하는 것을 권장합니다.

public abstract class Parent
{
    public abstract object InnerMethod();
}

public class ClassType1 : Parent
{
    public override object InnerMethod()
    {
        ...
    }
}

public class ClassType2 : Parent
{
    public override object InnerMethod()
    {
        ...
    }
}

...

public object Method()
{
    return (SomeInstance as Parent).InnerMethod();
}
1개의 좋아요