1. ホーム
  2. c#

C#の拡張メソッドはプライベート変数にアクセスできる?

2023-08-23 17:41:06

質問

拡張メソッドを使用して、オブジェクトのプライベート変数にアクセスすることは可能ですか?

どのように解決するのですか?

いいえ、拡張メソッドでも、何らかのユーティリティクラスの "通常の" 静的メソッドと同じことが可能です。

ということは、この拡張メソッド

public static void SomeMethod(this string s)
{
    // do something with 's'
}

はこのような静的なヘルパーメソッドと同等です(少なくともアクセスできるものに関しては)。

public static void SomeStringMethod(string s)
{
    // do something with 's'
}

(もちろん、プライベートなメンバにアクセスするために、どちらのメソッドでも何らかのリフレクションを使うことはできます。しかし、それはこの質問のポイントではないのでしょう)