[英]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.