【发布时间】:2011-07-22 12:45:06
【问题描述】:
众所周知,使用 java 可以创建需要从另一个类扩展的一个或多个对象的方法;为此,您必须编写:
public void method(Class<? extends class_name> Object_name)
我想知道C#中是否有相应的语句。有人知道吗?
【问题讨论】:
标签: c# java class inheritance
众所周知,使用 java 可以创建需要从另一个类扩展的一个或多个对象的方法;为此,您必须编写:
public void method(Class<? extends class_name> Object_name)
我想知道C#中是否有相应的语句。有人知道吗?
【问题讨论】:
标签: c# java class inheritance
嗯,这是接受 type 而不是 object,但您可以在 C# 中使用泛型方法做一些稍微类似的事情:
public void Foo<T>() where T : MyClass
然后你可以在方法中使用typeof(T)。
如果您需要指定与T 类型兼容的实际对象,您可以将其作为T 类型的普通方法参数。
如果您需要更多,请用更具体的要求更新您的问题。
【讨论】:
您可以使您的方法签名通用并使用约束
例如:
public static ObjectB GetObjectBFromInterface<T>(T item) where T : IObject
{
//Do some stuff
}
有关泛型类型约束的更多信息,请参阅here
【讨论】:
您可以编写一个泛型方法并使用type parameter constraint:
public void Method<T>(T obj) where T : YourBaseClass
{
// ...
}
【讨论】:
我已经多年没有使用 Java 编码了,所以我不熟悉 <? extends 构造,但是,我想您是在问如何将接口或抽象类传递给方法。
你可以使用泛型,但我认为你最好只使用基类
public void Method(BaseClass baseClassParamName)
{
baseClassParamName.HasAccessToMethodsDefinedInTheBase();
}
【讨论】: