如果 main class 中的 属性 设置为 false,则使用 subclass in my main class 中的值

Use a value from a subclass in my main class if a property in main class is set to false

子 class 不是从主 class 派生的,我只是想区分它们。

即使我输入这个,我也能看到这是不可能的,但我有一些 classes:

public class TransferServiceInformation {
    public int ProviderId { get; set; }
    public string PrePurchaseOverride { get; set; }
    public bool PrePurchaseOverrideEnabled { get; set; }
}

public class TransferServiceProviderInformation {
    public int ProviderId { get; set; }
    public string PrePurchaseInfo { get; set; }

我想要它,这样如果我尝试访问 myTransferServiceInformation.PrePurchaseOverridePrePurchaseOverrideEnabled == false 它应该从 TransferServiceProviderInformation return PrePurchaseInfo 使用相同的编号.

有可能吗?

我只是想,需要将 TransferServiceProviderInformation 作为参数传递的 getter 可能有效,如果 ID 不匹配则抛出异常。那是唯一的解决办法吗?问题是,我宁愿不必深入研究所有(数千行)代码来更改我(或其他人)称之为 属性.

的所有地方

这只是一个想法:

在 class 中创建一个包含实例的静态列表,并使用构造函数自动填充它。然后您可以从外部检查此列表以查找具有相同 ID 的实例。

public class TransferServiceInformation
{
    public int ProviderId { get; set; }

    private string prePurchaseOverride;
    public string PrePurchaseOverride
    {
        get
        {
            if(!PrePurchaseOverrideEnabled)
            {
                // Get instances from the other class where providerID matches
                var instance = TransferServiceProviderInformation.Instances.Where(i => i.ProviderId == this.ProviderId).FirstOrDefault();
                if(instance != null)
                return (instance).PrePurchaseInfo;
            }
            return null; // If no match found
        }
        set
        {
            prePurchaseOverride = value;
        }
    }

    private bool prePurchaseOverrideEnabled;
    public bool PrePurchaseOverrideEnabled { get; set; }
}

public class TransferServiceProviderInformation
{
    // Store your instances static
    public static List<TransferServiceProviderInformation> Instances { get; set; }

    public TransferServiceProviderInformation()
    {
        // Add every new instance to the list
        Instances.Add(this);
    }

    public int ProviderId { get; set; }
    public string PrePurchaseInfo { get; set; }
}

待办事项:

如果一个实例被处置,将其从实例列表中删除。