2010-12-23 61 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; 
} 
相关问题