C# 클래스 또는 메서드 <t> 위치에 대한 질문

안녕하세요. :smile:

제가 인스턴스를 반환하는 클래스 구조를 설계하고 있는데요.
<T> 위치에 관하여 질문을 드리고자 합니다.

첫번째 코드는 <T>가 메서드 부분에 있고, 두번째 코드는 클래스 부분에 위치하고 있습니다.

두 코드 중 <T>를 어느 쪽에 위치시키는게 좀 더 자연스러울까요?
이에 대한 설명과 조언 부탁드립니다.

(그리고 <T>의 정확한 명칭도 알고싶습니다.)

메서드 Create<T>

public static class ProxyService
{
	public static IService<T> Create<T>(Proxy proxy)
	{
		IService<T> service = null;

		switch (proxy)
		{
			case Proxy.GetThatInfo: service = new GetThatInfoService<T>(); break;
			case Proxy.GetTerminal: service = new GetTerminalService<T>(); break;
			// ...
		}
		return service;
	}
}

클래스 ProxyService<T>

public static class ProxyService<T>
{
	public static IService<T> Create(Proxy proxy)
	{
		IService<T> service = null;

		switch (proxy)
		{
			case Proxy.GetThatInfo: service = new GetThatInfoService<T>(); break;
			case Proxy.GetTerminal: service = new GetTerminalService<T>(); break;
			// ...
		}
		return service;
	}
}

읽어주셔서 감사합니다.

1개의 좋아요

괄호부터 말씀드리면 Generic Type 입니다.

클래스가 Static이므로 둘 다 크게 상관없지 않을까 합니다.

저는 메소스 반환 제네릭 타입을 선호하는 편입니다.

클래스 인스턴스에 적용할 제네릭 타입의 경우 클래스 제네릭 타입을 선호(맞는것) 합니다.

사실 목적에 따라 다르게 적용하는게 맞는것 같습니다. 보통 반환값의 제네릭 타입은 정적 클래스에서,

인스턴스 클래스의 경우 인자 제네릭타입일 때 많이 쓰입니다.

3개의 좋아요

감사합니다. :smile:

@dimohy 그리고 설명도 정말 감사드립니다. 앞으로 많은 도움이 될 것 같습니다!

1개의 좋아요