이 예제는 매우 간단하고 내가 달성하려는 것을 보여줍니다.
public class A : A<object>
{
// public static A GetInstance() => new A();
// I can't do this, because cannot override static methods
}
public class A<T>
{
public static A<T> GetInstance() => new A<T>();
// public static A GetInstance() => new A();
// can't do this, because it says that the method is already defined
}
기본적으로 GetInstance
두 가지 방법으로 방법을 사용할 수 있기를 원합니다 .
T
: A<T>.GetInstance()
또는 A.GetInstance<T>()
(어떤 유형 은 중요하지 않음)-유형을 반환해야합니다.A<T>
A.GetInstance()
- 유형 을 반환해야합니다 A
.이것을 어떻게 할 수 있습니까?
using System;
public class Program
{
public static void Main()
{
Console.WriteLine(A.GetInstance());
Console.WriteLine(A<int>.GetInstance());
Console.WriteLine(A.GetInstance<bool>());
/*
output :
Program+A
Program+A`1[System.Int32]
Program+A`1[System.Boolean]
*/
}
// 클래스
public class A : A<object>
{
// non-generic method in non-generic class
public static A GetInstance()
{
return new A();
}
// generic method
public static A<T> GetInstance<T>()
{
return new A<T>();
}
}
public class A<T>
{
// non-generic method in generic class
public static A<T> GetInstance()
{
return new A<T>();
}
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다