2010-12-23 64 views
3

我想創建一個開放泛型類型,它具有派生類型使用的構造函數,但是我要麼不知道如何去做,要麼不可能 - 不知道是哪個。如何在一個開放泛型類型中定義構造函數?

public struct DataType<T> : IDataType { 

    private T myValue; 
    private TypeState myState; 

    internal DataType<T>(T initialValue, TypeState state) { 
     myValue = initialValue; 
     myState = state; 
    } 
} 

任何幫助非常感謝!

科特

編輯:構造最初發布爲私有的,這是錯誤的,應該受到保護。但是 - 保護不允許在一個結構中,所以我將其更改爲內部。

+0

也許如果構造是不是私人的,將工作... – 2010-12-23 19:48:53

+0

如果它是由派生類型使用,可以考慮將它`protected` ;-) – Jon 2010-12-23 19:49:29

回答

7

構造函數沒有泛型參數,就像任何可以使用T但不通用的類的常規方法一樣。

public class DataType<T> : IDataType { 

    private T myValue; 
    private TypeState myState; 

    protected DataType(T initialValue, TypeState state) { 
     myValue = initialValue; 
     myState = state; 
    } 
} 

請注意,結構不能被繼承,並且私有構造函數不能通過繼承類來調用。改變這兩個以及爲了得到它的工作。

0
private DataType(T initialValue, TypeState state) 
{ 
    myValue = initialValue; 
    myState = state; 
} 
相關問題