是否可以构造泛型方法,因此T是可选的?

Nib*_*Pig 18 c# generics

难以回答的问题,但如果我有:

public class BunnyManager
{
    public Bunny<T> GetBunny<T>(string someJson)
    {
       return new Bunny<T>(someJson);
    }
}

public class Bunny<T>
{
   T parsedJson { get; set; }

    public Bunny<T>(string someJson)
    {
        if (!string.IsNullOrEmpty(someJson))
            parsedJson = ConvertJsonStringToObject<T>(someJson);
    }
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下,我想得到一个没有任何json的Bunny对象,因为json字符串为null,所以我不在乎T是什么.

在这种情况下,我可以创建一个过载或T完全忽略的东西,或者我可以打电话GetBunny<null>GetBunny<object>

我想知道解决这个问题的正确方法是什么.

Mag*_*nus 20

您可以拥有泛型继承的非泛型兔子类.

public class BunnyManager
{
    public Bunny<T> GetBunny<T>(string someJson)
    {
       return new Bunny<T>(someJson);
    }

    public Bunny GetBunny()
    {
       return new Bunny();
    }
}

public class Bunny
{

}

public class Bunny<T> : Bunny
{
   T parsedJson { get; set; }

    public Bunny(string someJson)
    {
        if (!string.IsNullOrEmpty(someJson))
            parsedJson = ConvertJsonStringToObject<T>(someJson);
    }
}
Run Code Online (Sandbox Code Playgroud)