调用基类一集派生方法

编程入门 行业动态 更新时间:2024-10-15 14:12:31
本文介绍了调用基类一集派生方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个抽象类命名为A,和其他类(B,C,D,E,...)实现A. 我的派生类持有不同类型的值。 我也有一个对象的列表

I have one abstract class named A, and other classes (B, C, D, E, ...) that implements A. My derived classes are holding values of different types. I also have a list of A objects.

abstract class A { } class B : class A { public int val {get;private set;} } class C : class A { public double val {get;private set;} } class D : class A { public string val {get;private set;} } class Program { static void Main(string[] args) { List list = new List { new B(), new C(), new D(), new E() }; // ... foreach (A item in list) { Console.WriteLine(String.Format("Value is: {0}", item.val); } } }

。 ..where的.VAL不是由基类OFC闻名。

...where the .val is not known by the base-class ofc.

我怎样才能得到这个动态的行为吗?我不想在长时间使用的getType 。开关/ if语句

How can i get this dynamic behaviour? I don't want to use getType in a long switch/if-statements.

推荐答案

试试这个:

using System; using System.Collections.Generic; abstract class A { public abstract dynamic Val { get; set; } } class B : A { public override dynamic Val { get; set; } } class C : A { public override dynamic Val { get; set; } } class D : A { public override dynamic Val { get; set; } } class Program { static void Main(string[] args) { var list = new List<A> { new B(), new C(), new D() }; // ... foreach (A item in list) { Console.WriteLine(String.Format("Value is: {0}", item.Val)); } } }

更多推荐

调用基类一集派生方法

本文发布于:2023-08-04 09:09:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1294991.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:一集   方法

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!