当前位置:  开发笔记 > 编程语言 > 正文

如何将常用扩展方法应用于第三方SDK中的多个不相关类型?

如何解决《如何将常用扩展方法应用于第三方SDK中的多个不相关类型?》经验,为你挑选了2个好方法。

我开始爱上扩展方法,但我只是不知道如何为确定的对象类型创建EM.

我有例如:

public static void AddPhoneNumberToContact(this Contact contact, PhoneType type, String number)
{
    lock (contact)
    {
        PhoneRow pr = PhoneRow.CreateNew();
        pr.SetDefaults();
        pr.PtypeIdx = type;
        pr.PhoneNumber = number;
        contact.Phones.Add(pr);
        pr = null;
    }
}

我的问题是我想在Person对象中也有这个方法,这就是我命名的原因

AddPhoneNumberToContact
AddPhoneNumberToPerson

有没有办法让AddPhoneNumber和处理提供的对象?

或解决方案是

public static void AddPhoneNumber(this object contact, ...
{
   ...

   if(typeof(Contact) == contact)
      ((Contact)contact).Phones.Add(pr);
   else if(typeof(Person) == contact)
      ((Person)contact).Phones.Add(pr);
}

谢谢.



1> Frederick Th..:

如何写两个扩展方法:

public static void AddPhoneNumber(this Contact contact, PhoneType type);

public static void AddPhoneNumber(this Person person, PhoneType type);

看起来更干净.

如果两者之间存在一些共同的代码,请将其提取到单独的方法中.



2> Anton Gogole..:

制作ContactPerson实现通用接口 - 比如说IContactWithPhoneNumbers- 然后为此接口编写扩展方法.

public interface IContactWithPhoneNumbers {}
public class Contact : IContactWithPhoneNumbers {}
public class Person : IContactWithPhoneNumbers {}
public static void AddPhoneNumber(this IContactWithPhoneNumbers obj) {}

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有