使用类型的属性作为参数

时间:2015-08-05 16:33:12

标签: c# .net class

下面我有一个类,其属性类型属于另一个类:

    ParentClass parentClass = new ParentClass();

    public class ParentClass
    {
        public NestedClass nestedClassProperty { get; set; }
    }

以下是在ParentClass中用作属性的类:

    public class NestedClass
    {
        public string someProperty { get; set; }
    }

我如何将nestedClassProperty传递给只接受ParentClass分开的属性的方法?请参阅以下示例:

    public void method1()
    {
        method2(parentClass.nestedClassProperty);
    }

    public void method2(/* Parameter should accept the nestedClassProperty
                           within ParentClass Note: This method should also                 
                           accept any other property within ParentClass   
                           that's type is of another class. */)
    {
        /* Do something with nestedClassProperty.

           Note: Every class that's nested as a property 
           within ParentClass will have identical properties. */
    }

提前致谢!

1 个答案:

答案 0 :(得分:1)

与任何其他方法签名一样,参数将是预期类型:

public void method2(ParentClass.NestedClass nestedClassObject)
{
    // ...
}

对于嵌套在另一个类中的类,类型限定符只是OuterClass.InnerClass

编辑:如果可以有多个嵌套类,那么您需要以某种方式对它们进行分组,无论是作为参数类型还是作为泛型方法的类型约束。作为嵌套类本身的性质对于类型系统而言在结构上并不重要。

请注意您在此处所说的内容:

  

注意:每个嵌套类都具有相同的属性。

这看起来像是一个接口的工作:

public interface INestedClass
{
    // declare the identical members
}

然后嵌套类将实现该接口:

public class ParentClass
{
    // etc.

    public class NestedClass : INestedClass
    {
        // implement the interface
    }
}

方法参数将是接口:

public void method2(INestedClass nestedClassObject)
{
    // ...
}

接口本身也可以像任何其他类一样嵌套。

基本上你正在寻找的是教科书多态。无论任何给定类型是否嵌套在另一种类型中都没有区别。