gpt4 book ai didi

c# - 将不同类型的参数传递给 C# 接口(interface)上定义的函数

转载 作者:行者123 更新时间:2023-11-30 12:31:39 31 4
gpt4 key购买 nike

<分区>

我想将一组规则应用于一组业务对象。这些都是简单的规则,我不想使用任何现有的业务规则引擎。

我需要将不同的上下文传递给每个规则,因此理论上每个规则可能需要不同的参数。以下是我目前的做法。还有其他/更好的方法吗?

注意:我已经使用访问者模式进行了评估,但对于这个特定场景来说似乎需要付出太多努力。实际规则并没有比示例中的规则复杂多少。

interface IParamBase {}

interface IParam : IParamBase
{
string MyProperty {get; set;}
}

class Param : IParam
{
public string MyProperty {get; set;}
}

interface IRule
{
void Setup(IParamBase param);
void Apply(BusinessObject businessObject);
}

class Rule :IRule
{
IParam _param;
public void Apply(BusinessObject businessObject)
{
businessObject.AssignedFromRule = _param.MyProperty;
Console.WriteLine(businessObject.AssignedFromRule);
}

public void Setup(IParamBase param)
{
_param = param as IParam;
}
}

class BusinessObject
{
public string AssignedFromRule {get; set;}
}

void Main()
{
var rule = new Rule();
var param = new Param();
param.MyProperty = "my property";
BusinessObject businessObject = new BusinessObject();
rule.Setup(param);
rule.Apply(businessObject);
}

更新:我忘了在示例中添加向下转型的需求。

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