C# 这是适配器模式的最佳用途吗?

C# 这是适配器模式的最佳用途吗?,c#,design-patterns,C#,Design Patterns,当您试图适应的只是一个包含字段而不是方法或函数的类时,使用适配器模式是最好的设计吗 例如,以下是实现这一点的最佳方法吗?如果这对你的答案有什么影响的话,我用的是C NewClass private Guid _guidId; AdpaterClass : NewClass private Guid _guidId; LegacyClass : LegacyBaseClass private Guid _guidId; p

当您试图适应的只是一个包含字段而不是方法或函数的类时,使用适配器模式是最好的设计吗

例如,以下是实现这一点的最佳方法吗?如果这对你的答案有什么影响的话,我用的是C

    NewClass 
     private Guid _guidId;

    AdpaterClass : NewClass
     private  Guid _guidId;

    LegacyClass : LegacyBaseClass
     private  Guid  _guidId;
     private  String _stringDescription;
     private  DateTime _dateTimeValue;
我为什么要这样做

我正试图将LegacyClass和另一个类降低到相同的基线,这样我就可以使用一个通用方法在_guidId上进行排序/筛选。通用方法将引入一个Guid列表,检查_GuidId并查看它是否匹配,然后基于此执行某些函数。我的目标不是多次编写相同的排序/筛选函数,因为它们几乎相同


谢谢你的建议。

我想你想要的是如下内容:

interface ICanHazGuidId {
    Guid GuidId { get; }
}

class NewClass : ICanHazGuidId {
    public Guid GuidId { get; private set; }
    // etc.
}

class AdapterClass : ICanHazGuidId {
    private LegacyClass legacy;
    public Guid GuidId {
        get {
            // obtain and return legacy._guidId;
        }
    }
    // constructor eating instance of LegacyClass etc.
}

然后只需实现一个
IComparer
等。如果是这样,这将是适配器模式的一个很好的用途。

您到底想做什么?为什么要修改一个类,使其只具有另一个私有实例变量?我看不到任何属性。只有田地。但是可以肯定的是,如果您有一个纯粹由属性定义的接口,那么将任何内容适配到该接口将需要一个公开这些属性的适配器…为什么不呢,属性只是get/set方法的语法糖。接口IcanhazGuidd{…}+1用于聪明的接口命名,与MS推荐的命名约定保持一致(接口以“I”开头)。玩得很好。