如何在开放泛型类型中定义构造函数?

Cor*_*ort 3 c# generics constructor

我试图在开放泛型类型上创建,其中有一个构造函数可供派生类型使用,但我要么不知道如何操作,要么不可能 - 不确定哪个.

 public struct DataType<T> : IDataType {

    private T myValue;
    private TypeState myState;

    internal DataType<T>(T initialValue, TypeState state) {
        myValue = initialValue;
        myState = state;
    }
 }
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢!

科特

编辑:构造函数最初发布为私有,这是错误的,应该受到保护.但是 - 结构中不允许保护,因此我将其更改为内部.

Luc*_*ero 7

构造函数没有泛型参数,就像可以使用T但不是通用的类的任何常规方法一样.

public class DataType<T> : IDataType {

    private T myValue;
    private TypeState myState;

    protected DataType(T initialValue, TypeState state) {
        myValue = initialValue;
        myState = state;
    }
 }
Run Code Online (Sandbox Code Playgroud)

请注意,不能继承结构,并且不能通过继承类来调用私有构造函数.改变这两个,以使其工作.

  • @Cort:问题是结构不能从任何东西继承.他们只能实现接口.要么将NumberType更改为类,要么您必须重新考虑您的设计...... (2认同)