は、私はクラスライブラリプロジェクトを持っている、と私の名前空間/メインクラスは、次のようになります。クラスファイルを部分クラスに分割するとスコープに影響しますか?
ファイル:Document.cs
namespace HtmlEngine
{
public class Document : IDisposable
{ ...
public class DocumentActionReplaceByTag : IDocumentAction
{
このすべてが正常に動作し、私は入れて別のプロジェクト/組立中:
using HtmlEngine;
...
DocumentActionReplaceByTag currentDocAction = new HtmlEngine.DocumentActionReplaceByTag("[NEXT_PART]");
と完全に動作します。しかし、DocumentクラスファイルをDocumentActions.cs、DocumentSections.csという名前のファイルに分割し、Document.csファイルの主な機能を維持しました。これらの各の上部には私が入れ:
public partial class Document : IDisposable
{
さて、私は「記号を解決することはできません 『DocumentActionReplaceByTag』」エラーが出るのかかるプロジェクトに。私はまだHtmlEngineへの参照を使用しています。
「私は見つけることができるネットは、同様に私の窮状を説明し、このポストだったが、彼はそれが起こった理由について非常に明確ではなかったに最も近いもの:http://www.daniweb.com/software-development/csharp/threads/140673/understanding-partial-classes
私はいつも部分クラスは、構文上だったと信じています砂糖を入れて、コンパイルする前に単一のクラスにまとめました。部分クラス宣言ごとにインターフェイスを繰り返しましたが、それが要素であるかどうかはわかりません。
なぜこれが範囲外になるのですか? IDisposableをおよそ
DocumentActionReplaceByTag currentDocAction = new HtmlEngine.Document.DocumentActionReplaceByTag("[NEXT_PART]");
そして、何、それは唯一つの部分のファイルで指定する必要があります。私はあなたのコードを理解している場合
ありがとうAndris。それは正しいです、明示的な参照を追加することは仕事ですが、接頭辞なしでDocumentActionReplaceByTagに引き続きアクセスしたいと思います。これは、クラスを分割する前にそれがどのように機能していたかです。私は他のファイルからIDisposableを削除しましたが、それでも違いはありません。私はこれが名前空間ではないので、 "HtmlEngin.Documentを使って"追加することはできません - 私の質問はなぜ違う振る舞いです(そしてうまくいけば、それを解決するために何ができますか)。 Thx – Glinkot
私はネストされたクラスを使用して、例を追加します。私があなたの状況を理解していないと感じる場合は、より詳細をご記入ください。 – Andris
こんにちはアンドリス。この場合(元の質問のdescを参照)、別のアセンブリ/名前空間のクラスを使用しています。ネストされたクラスは、クラスが1つのファイルに含まれている場合には資格なしでインスタンス化できますが、部分クラスに分割するともう機能しません。私の質問のリンクの男の説明に従って。なぜ私は親クラスでそれぞれを修飾する必要があるのか理解できません。クラスを再結合する必要がある場合は、そのクラスを再結合し、リージョンを使用する必要があります。とにかくそれはとにかくかもしれませんが、私はまだスコープの変更が起こるのだろうと思っています。 – Glinkot