C#接口:是否可以在接口本身中引用实现接口的类型?

Kna*_*lus 5 c# interface

我基本上希望做的是设计一个通用接口,在实现时,会产生一个类似于T的类,除了它有一些额外的功能.这是我正在谈论的一个例子:

public interface ICoolInterface<T>
{
    T Value { get; set; }
    T DoSomethingCool();
}

public class CoolInt : ICoolInterface<int>
{
    private int _value;

    public CoolInt(int value)
    {
        _value = value;
    }

    public int Value
    {
        get { return _value; }
        set { _value = value; }
    }

    public int DoSomethingCool()
    {
        return _value * _value;
        // Ok, so that wasn't THAT cool
    }
}
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但为了使用CoolInt,我需要做这样的事情:

CoolInt myCoolInt = new CoolInt(5);
int myInt = myCoolInt.Value;
Run Code Online (Sandbox Code Playgroud)

至少在分配方面,我更倾向于CoolInt就像int一样工作.换一种说法:

CoolInt myCoolInt = 5;
int myInt = myCoolInt;
Run Code Online (Sandbox Code Playgroud)

为此,我将这两个转换运算符添加到我的CoolInt类中:

    public static implicit operator CoolInt(int val)
    {
        return new CoolInt(val);
    }

    public static implicit operator int(CoolInt obj)
    {
        return obj.Value;
    }
Run Code Online (Sandbox Code Playgroud)

工作得很棒.现在,如果我可以将这两个重载添加到接口,我更喜欢它,因此接口的实现者被迫实现这些运算符.问题是,这些运算符的原型直接引用CoolInt.

对于隐式定义或尚未定义的内容,C#有很多"占位符"名称.通用编程中常用的T就是一个例子.我想在Properties中使用的value关键字是另一个."这个"参考可以被认为是另一个.我希望在我的界面中可以使用另一个符号来表示"实现此接口的类的类型",例如"实现者".

    public static implicit operator implementer(int val)
    {
        return new IntVal(val);
    }

    public static implicit operator int(implementer obj)
    {
        return obj.Value;
    }
Run Code Online (Sandbox Code Playgroud)

这可能吗?

cwa*_*wap 2

可悲的是没有 :(

C# 在运算符重载方面表现不佳(这是一个示例,另一个示例是对某些运算符类型的通用约束)。