假設我有一個基本的類層次結構是這樣的:轉換的通用結構,以相同的通用結構與不同類型的參數
public abstract class BaseClass { }
public class X : BaseClass { }
public class Y: BaseClass { }
而且我有一個通用的結構,因爲這:
public struct MyStruct<T>
where T: BaseClass, new()
{
}
我然後可以創建一個實例如下:
var x = new MyStruct<X>();
現在我想提供一個操作(構造函數或轉換n運算符)上MyStruct
,這讓我轉換MyStruct<X>
到MyStruct<Y>
:
MyStruct<Y> my = new MyStruct<X>();
當我寫一個構造函數如下:
public struct MyStruct<T>
where T: BaseClass, new()
{
public MyStruct(MyStruct<T2> value)
where T2: BaseClass, new()
{
...
}
}
編譯器不明白我試圖做(它似乎無法區分MyStruct<T>
和MyStruct<T2>
)。
如何將MyStruct<X>
從MyStruct<T>
轉換爲MyStruct<Y>
?
有沒有辦法在轉換運算符中執行此操作?所以客戶端代碼不必顯式調用特定的方法? –