具有多个命名的C#类

问题描述 投票:0回答:1

我在项目中引用了一个外部程序集 (dll),并且该程序集有多个版本。

问题是程序集更改了一些类名,并且在使用它们时出现了运行时错误。例如,在某些版本中,类名称为

BipedDriver
,而其他版本则为
BipedMaster

问题:是否可以使用不同名称的类并决定何时使用它?例如,如果参考程序集版本为 1000,则类名称为

BipedDriver
,否则为
BipedMaster
?

c# wpf class runtime-error naming
1个回答
0
投票

使用您自己的特定于域的命名来包装和抽象依赖项。

例如,创建您自己的接口,公开您需要依赖项执行的操作:

public interface IBiped
{
    // define your own method names here
}

并创建两个实现(或者您喜欢的任意多个实现):

public class MyBipedMaster : IBiped
{
    // implement your interface using "BipedMaster"
}

public class MyBipedDriver : IBiped
{
    // implement your interface using "BipedDriver"
}

然后在整个领域逻辑中,所有内容都可以简单地引用

IBiped
的实例。无论何时/无论您有逻辑来确定要使用哪个实现,您都可以提供该实现。一个简单的例子可能是:

public class BipedFactory
{
    public static IBiped Create(bool someCondition)
    {
        if (someCondition)
            return new MyBipedDriver();
        else
            return new MyBipedMaster();
    }
}

使用代码永远不需要知道哪个是哪个:

var biped = BipedFactory.Create(someCondition);

如何抽象

someCondition
取决于您。例如,也许不是将其传递给工厂,而是由工厂内部决定。或者您可能根本不使用显式工厂,而是将此逻辑构建到您正在使用的任何依赖项注入系统中,以便它知道将哪个实现注入到任何需要它的对象中。

© www.soinside.com 2019 - 2024. All rights reserved.