【问题标题】:passing as parameter an object derived from a class in C#将派生自 C# 中的类的对象作为参数传递
【发布时间】:2011-07-22 12:45:06
【问题描述】:

众所周知,使用 java 可以创建需要从另一个类扩展的一个或多个对象的方法;为此,您必须编写:

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

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

【问题讨论】:

    标签: c# java class inheritance


    【解决方案1】:

    嗯,这是接受 type 而不是 object,但您可以在 C# 中使用泛型方法做一些稍微类似的事情:

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

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

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

    如果您需要更多,请用更具体的要求更新您的问题。

    【讨论】:

      【解决方案2】:

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

      例如:

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

      有关泛型类型约束的更多信息,请参阅here

      【讨论】:

        【解决方案3】:

        您可以编写一个泛型方法并使用type parameter constraint

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

        【讨论】:

          【解决方案4】:

          我已经多年没有使用 Java 编码了,所以我不熟悉 &lt;? extends 构造,但是,我想您是在问如何将接口或抽象类传递给方法。

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-14
            • 2022-11-21
            • 1970-01-01
            • 1970-01-01
            • 2011-05-31
            相关资源
            最近更新 更多