gpt4 book ai didi

c# - 如何将 'list of classes' 转换为 'list of its interface' ?

转载 作者:行者123 更新时间:2023-12-02 15:50:19 25 4
gpt4 key购买 nike

我需要将类列表转换为其自己的接口(interface)列表。

所以我有接口(interface)Demo_Interface以及基于 Demo_Interface 的两个类,现在我创建类似 List<Test_Class1> 的类列表

我有一个函数 List<Demo_Interface>参数。

这是界面:

       interface Demo_Interface
{
int test_int { get; set; }
}

这是整个代码:

using System;
using System.Collections.Generic;

namespace ConsoleApp3
{
class Program
{
///// Main Interface
interface Demo_Interface
{
int test_int { get; set; }
}

//// Class 1 Based On Demo_Interface
class Test_Class1 : Demo_Interface
{
public int test_int { get; set; }
public string test_string { get; set; }

}
///// Class 2 Based On Demo_Interface
class Test_Class2 : Demo_Interface
{
public int test_int { get; set; }
public string test_string { get; set; }

}

//// And Main Class
class Main_Class
{
public List<Test_Class1> class_list_1 { get; set; }

public List<Test_Class2> class_list_2 { get; set; }

public Main_Class()
{
class_list_1 = new List<Test_Class1>() { };
class_list_2 = new List<Test_Class2>() { };
}
}

//// Console Main
static void Main(string[] args)
{
var new_main_class = new Main_Class();

Output_Class(new_main_class.class_list_1); ///// ==> ERROR

Console.ReadKey();
}

//// Simple Function for do something with interface
static void Output_Class(List<Demo_Interface> inter_input)
{
for (int i = 0; i < inter_input.Count; i++)
{
Console.WriteLine("{0} - {1}",i, inter_input[i].test_int);
}
}
}
}

如何转换 List<Test_Class1>List<Demo_Interface> ,当Test_Class1使用Demo_Interface时?

最佳答案

你可以试试

List<Test_Class1> testDemo = new List<Test_Class1>(); //list of Test_Class1 instances
List<Demo_Interface> result = testDemo.ToList<Demo_Interface>();

这是安全的,因为我们没有直接将 testDemo 转换为其接口(interface)。我们保持 testDemo 不变,并创建 result,它是 Demo_Interface

的列表

关于c# - 如何将 'list of classes' 转换为 'list of its interface' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56058668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com