下面我有一个类,其属性类型属于另一个类:
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. */
}
提前致谢!
答案 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)
{
// ...
}
接口本身也可以像任何其他类一样嵌套。
基本上你正在寻找的是教科书多态。无论任何给定类型是否嵌套在另一种类型中都没有区别。