gpt4 book ai didi

c# - 类型转换通用对象的方法c#

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:08 25 4
gpt4 key购买 nike

我有几个对象有一个具有相同属性的对应对象。

class Source1
{
int id;
string name;
DateTime date;
}

class Destination1
{
int id;
string name;
DateTime date;
}

class Source2
{
int id;
string code;
double price;
}

class Destination2
{
int id;
string code;
double price;
}

现在我想创建一个具有泛型类型的方法,可以将一个对象转换成他对应的对象。

public TDestination Cast<TSource, TDestination>(TSource source)
{
//TDestination destination = (TDestination) source;
return destination;
}

最佳答案

这里最好的选择是引入一个公共(public)接口(interface)(或基类)。没有其他方法可以将一个项目转换为另一个项目。

public interface IItem
{
int id {get;set;}
string name {get;set;}
DateTime date {get;set;}
}

class Source1 : IItem
{
public int id {get;set;}
public string name {get;set;}
public DateTime date {get;set;}
}

class Destination1 : IItem
{
public int id {get;set;}
public string name {get;set;}
public DateTime date {get;set;}
}

然后您可以将对象转换为接口(interface)并访问属性。

var item1 = (IItem)sourceItem;
var item2 = (IItem)destinationItem;

如果您不想这样做,另一种选择是使用反射,遍历源中的属性并创建目标类型的新对象,并尝试使用共享名称映射属性。然而,这将创建一个新对象,并且与类型转换完全不同。有图书馆,如AutoMapper这可以帮助你。

AutoMapper.Mapper.CreateMap<Source1, Destination1>();
var destItem = AutoMapper.Mapper.Map<Destination1 >(sourceItem);

关于c# - 类型转换通用对象的方法c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35621462/

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