gpt4 book ai didi

c# - 从通用类型继承为接口(interface)

转载 作者:太空狗 更新时间:2023-10-29 20:39:26 26 4
gpt4 key购买 nike

我正在尝试做类似的事情:

public interface IView<T> : T where T : class 
{
T SomeParam {get;}
}

这样我以后就可以做

public class SomeView : IView<ISomeView> 
{
}

是否有可能以这种方式使用泛型指定继承,或者我是否必须走很长的路要走并在定义类时显式指定两个接口(interface)并执行:

public interface IView<T> 
{
T SomeParam {get;}
}
public class SomeView : IView<ISomeView>, ISomeView
{
}

最佳答案

这是不可能的,但您的目标可能可以通过conversion operators 实现.看来您要做的是使传递 IView<T> 成为可能。作为 T它包含的对象。你可以这样写一个基类:

public abstract class ViewBase<T> {
public abstract T SomeParam { get; }

public static implicit operator T(ViewBase<T> view) {
return view.SomeParam;
}
}

然后,如果你定义一个类:

public class SomeView : ViewBase<ISomeView> { }

它可以在ISomeView的任何地方被接受预计:

ISomeView view = new SomeView();

关于c# - 从通用类型继承为接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21630701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com