作为参数传递从C#中的类派生的对象

时间:2011-07-22 12:45:07

标签: c# java class inheritance

众所周知,使用java可以创建需要从另一个类扩展的一个或多个对象的方法;要做到这一点,你必须写:

public void method(Class<? extends class_name> Object_name)

我想知道C#中是否有相应的声明。有人知道吗?

4 个答案:

答案 0 :(得分:1)

嗯,这是接受类型而不是对象,但你可以做一些与C#中的泛型方法略有相似的东西:

public void Foo<T>() where T : MyClass

然后您可以在方法中使用typeof(T)

如果您需要指定与类型T兼容的实际对象,则可以将其作为T类型的常规方法参数。

如果您需要更多内容,请根据更具体的要求更新您的问题。

答案 1 :(得分:1)

您可以使您的方法签名为Generic并使用约束

例如:

public static ObjectB GetObjectBFromInterface<T>(T item) where T : IObject
{
    //Do some stuff
}

有关通用类型约束的详细信息,请参阅here

答案 2 :(得分:0)

您可以编写通用方法并使用type parameter constraint

public void Method<T>(T obj) where T : YourBaseClass
{
    // ...
}

答案 3 :(得分:0)

我多年没用Java编写代码了,所以我不熟悉<? extends构造,但是,我想你是在询问如何将接口或抽象类传递给方法。

你可以使用泛型,但我认为你最好只使用基类

public void Method(BaseClass baseClassParamName) 
{
   baseClassParamName.HasAccessToMethodsDefinedInTheBase();
}