gpt4 book ai didi

c# - 一种优雅的方式来做到这一点?可能是泛型?

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:48 26 4
gpt4 key购买 nike

我有两个派生类(Sale 和 ServiceCharge)。两者都是交易。如果我有一个 BusinessService,我想为它创建一个 ServiceCharge。如果我传递一个产品,我想实例化销售。

这是我的想法。

private void CreateInstance(object element)
{
Transaction transaction;
if (element.GetType() == typeof(BussinessService))
{
transaction = new ServiceCharge((BussinessService)element))
}
else
{
transaction = new Sale((Product)element);
}
{

你能告诉我一个更优雅的方式吗?我会知道如何只使用一个构造函数来使用泛型

private void CreateInstance<T>(T element)
{
Transaction transaction = new Transaction((T)element);
}

但我不知道如何处理第一种情况。

最佳答案

在这种情况下,一个简单的界面也可以工作:

interface ITransactionable
{
Transaction CreateTransaction();
}

class BusinessService : ITransactionable
{
public Transaction CreateTransaction() { return new ServiceCharge( this ); }
}

class Product : ITransactionable
{
public Transaction CreateTransaction() { return new Sale( this ); }
}

private void CreateInstance(ITransactionable element)
{
Transaction transaction = element.CreateTransaction();
...
}

关于c# - 一种优雅的方式来做到这一点?可能是泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17681197/

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