저는 Extension Methods와 사랑에 빠지기 시작했습니다. 그러나 나는 결정적인 Object 타입에 대해서만 EM을 만드는 방법을 모른다. 방법이 거기에있다제 3 자 SDK의 여러 비 관련 유형에 공통 확장 메소드를 적용하려면 어떻게해야합니까?
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);
}
당신을 감사하는 것입니다.
그런 자물쇠로 조심. AddPhoneNumberToContact의 호출자가 잠금 및 잠금을 인식하지 못하면 호출하기 전에 자신에게 연락하여 교착 상태가 보장됩니다. 일반적으로 개인 객체를 잠급니다. 확장 방법을 사용하면 이것이 불가능합니다. – Mendelt
게시물을 수정하여 해당 클래스를 수정할 수 없음을 명확히하십시오. 또한 상속 계층을 포함합니다. –
@Anton Gogolev 바로 제목에 있습니다! "타사 SDK" – balexandre