小编mil*_*lin的帖子

确保Type实例表示可从特定类分配的类型

我主要是一个Java程序员,所以这将是"Java中与C#相同的东西是什么"的问题之一.因此,在Java中,您可以在编译时限制Class类型参数来扩展某个超类,如下所示:

public <T extends BaseClass> void foo(Class<T> type) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

乃至

public <T extends BaseClass> T foo(Class<T> type) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

您甚至可以链接多个接口:

public <T extends BaseClass & BaseInterface1 & BaseInterface2> void foo(Class<T> type) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是如何在C#中完成的?我知道你可以使用"where T:BaseClass",但这只适用于你有一个实例T.当你只有一个Type实例时呢?

编辑:

为了解释,这是我想要做的:

ASSEMBLY#1(base.dll):

abstract class BaseClass {
    abstract void Foo();
}
Run Code Online (Sandbox Code Playgroud)

ASSEMBLY#2(sub1.dll,引用base.dll):

class SubClass1 : BaseClass {
    void Foo() {
        // some code
    }
}
Run Code Online (Sandbox Code Playgroud)

ASSEMBLY#3(sub2.dll,引用base.dll):

class SubClass2 : BaseClass {
    void Foo() {
        // some other code
    } …
Run Code Online (Sandbox Code Playgroud)

c# java extends types

8
推荐指数
1
解决办法
359
查看次数

标签 统计

c# ×1

extends ×1

java ×1

types ×1