声明实现通用接口的 C# 类

发布于 2024-11-19 01:16:48 字数 167 浏览 8 评论 0原文

假设我有一个空接口类 IBaseInterface,它仅用于将实现类“标记”为接口本身。

有什么办法可以做这样的事情吗?

例如:

public class MyClass : T where T : IBaseInterface
{
}

Suppose I have an empty interface class IBaseInterface which is used only to "label" implementing classes as being interfaces themselves.

Is there any way to do something like this?

For example:

public class MyClass : T where T : IBaseInterface
{
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

混吃等死 2024-11-26 01:16:48

不,你不能这样做,因为编译器必须在声明类时知道该类实现哪个接口。您可以在接口中使用通用参数 ,但必须指定实际接口。

No, you can't do that, since the compiler has to know which interface the class implements when you declare the class. You can have generic parameters to the interface, but the actual interface has to be specified.

后来的我们 2024-11-26 01:16:48

不是这样的,没有。我强烈建议使用组合模式来尝试实现您想要的任何结果。作为替代方案,您可能会发现 DynamicProxy (或其他代理解决方案)就是您想要的我们要去的。

Not like that, there isn't. I would strongly recommend using a composition pattern to try and achieve whatever you're trying. As an alternative, you might find DynamicProxy (or some other proxy solution) is what you're going for.

吃→可爱长大的 2024-11-26 01:16:48

您声明的类型甚至不是通用的。像这样的东西:

class MyClass<T> : T where T : IBaseInterface

在某些情况下可以工作(例如,如果使用 C++ 模板而不是 .Net 泛型),但它根本不是有效的 C# 代码。

我不确定“标签”的用途是什么,但是带有属性的

ClassType ClassType { get; }

接口
ClassType 是一个可以工作的enum

The type you're declaring isn't even generic. Something like this:

class MyClass<T> : T where T : IBaseInterface

could work under some circumstances (for example, if C++ templates were used instead of .Net generics), but it's simply not valid C# code.

I'm not sure what are the “labels” used for, but an interface with a property

ClassType ClassType { get; }

where
ClassType is an enum could work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文