gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:34:45 28 4
gpt4 key购买 nike

我开始爱上扩展方法,但我只是不知道如何仅为确定的对象类型创建 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);
}

谢谢。

最佳答案

写两个扩展方法如何:

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

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

对我来说看起来更干净了。

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

关于c# - 如何将通用扩展方法应用于第三方SDK中的多个不相关类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/515305/

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