簡體   English   中英

動態創建一個泛型類型,該類型使用類型本身作為泛型參數

[英]Dynamically create a generic type which use the type itself as generic parameter

這里有一個虛擬代碼來解釋我的問題:

public class A<TX, TA> where TA : A<TX, TA>
{

}

public void Do()
{
   var doy = typeof(A<,>).MakeGenericType(typeof(string), null/*??????*/));
}

如果我無法識別我的類型以將其用作參數,如何從我的泛型類型中創建類型?

謝謝你的幫助。

編輯,靜態執行的示例:

public abstract class A<TX, TA> where TA : A<TX, TA>
{
    public TA ChainMethod()
    {
        return (TA)this;
    }
}

public class AConcrete : A<string, AConcrete>
{
    public AConcrete OtherMethod()
    {
    return this;
    }
}

public class App
{
    public static void Start()
    {
    new AConcrete().ChainMethod().ChainMethod().OtherMethod();
    }
}

您需要設計類層次結構。 好像還沒到那里。 請看看這個例子,希望它會給你一個想法:

abstract class BaseBuilder<TBrick>
{
    public BaseBuilder<TBrick> AddBrick(TBrick brick)
    {
        // ...
        return this;
    }
}

class Builder : BaseBuilder<ConcreteBrick>
{
    public Builder AddRoof()
    {
        // ...
        return this;
    }

    public new Builder AddBrick(ConcreteBrick brick) 
    {
        base.AddBrick(brick);
        return this;
    }
}

它看起來像這樣:

new Builder()
    .AddBrick(new ConcreteBrick())
    .AddBrick(new ConcreteBrick())
    .AddRoof();

如果你不像我建議的那樣使用new關鍵字覆蓋方法,我認為你將無法使用繼承鏈接調用。 雖然如果你放棄鏈接呼叫的想法,你可以輕松實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM