强制类具有类型为参数的构造函数

时间:2018-10-30 16:46:34

标签: c# constructor

有没有一种方法可以强制类必须具有接受int参数的构造函数?

例如,如果我有一个名为ItemDetail的类并继承自名为ForceConstructor的类,那么我的ItemDetail类中是否必须有一个接受int参数的构造函数?

public class ItemDetail : ForceConstructor
{
    public ItemDetail(Data.Entities.Item item)
    {
        this.Item = item;
    }

    //MUST HAVE THIS
    public ItemDetail(int id)
    {
        this.Item = ItemService.GetItem(id);
    }
}

因此,从ForceConstructor继承的任何类都必须具有int id构造函数。

2 个答案:

答案 0 :(得分:0)

不,您不能那样做。必须在运行时对其进行检查,可以直接通过分析反射数据来进行检查,也可以通过尝试绑定到反射数据来间接进行检查(dynamic)。

与C ++不同,C#没有元编程鸭子类型,并且您不能在接口或基类中声明构造函数。

答案 1 :(得分:0)

我认为您可以使用abstract

完成此操作

这里的答案(https://stackoverflow.com/a/41685659/2343826)应该给您一个更好的主意。 HTH