この例外ハンドラを終了しようとしています: if (ConfigurationManager.ConnectionStrings["ConnectionString"]==null) { string pathOfActiveConfigFile = ...? throw new ConfigurationErrorsException( "You either forgot to set the connection string, or " + "you're using a unit test framework that looks for "+ "the config file in strange places, update this file : " + pathOfActiveConfigFile); } この問題は、nUnitを使用しているときにのみ発生するようです。
奇妙な癖があるようです...少なくとも同僚によると。私たちは小さなプロジェクトに一緒に取り組んできました。私がクラスを書いた方法は(簡単な例)です: [Serializable()] public class Foo { public Foo() { } private Bar _bar; public Bar Bar { get { if (_bar == null) _bar = new Bar(); return _bar; } set { _bar = value; } } } したがって、基本的に、ゲッターが呼び出され、フィールドがまだnullの場合にのみ、フィールドを初期化します。これは、どこでも使用されていないプロパティを初期化しないことにより、過負荷を軽減すると考えました。 ETA:私がこれを行った理由は、私のクラスに別のクラスのインスタンスを返すいくつかのプロパティがあり、さらにそれがさらに多くのクラスを持つプロパティを持つということです。最上位クラスのコンストラクターを呼び出すと、これらすべてのクラスが常に必要であるとは限らない場合、これらすべてのクラスのすべてのコンストラクターが呼び出されます。 個人的な好み以外に、この慣行に反対することはありますか? 更新:私はこの質問に関して多くの異なる意見を検討しました、そして私は私の受け入れられた答えを待ちます。しかし、今ではコンセプトの理解が深まり、いつ使用するか、いつ使用しないかを決めることができます。 短所: スレッドセーフティの問題 渡された値がnullの場合、「setter」リクエストに従わない マイクロ最適化 例外処理はコンストラクターで行う必要があります クラスのコードでnullをチェックする必要があります 長所: マイクロ最適化 …
このコードが機能しない理由を誰かが知っていますか: public class CollectionViewModel : ViewModelBase { public ObservableCollection<EntityViewModel> ContentList { get { return _contentList; } set { _contentList = value; RaisePropertyChanged("ContentList"); //I want to be notified here when something changes..? //debugger doesn't stop here when IsRowChecked is toggled } } } public class EntityViewModel : ViewModelBase { private bool …
Funcとして出力パラメーターを持つメソッドを渡すことはできますか? public IList<Foo> FindForBar(string bar, out int count) { } // somewhere else public IList<T> Find(Func<string, int, List<T>> listFunction) { } Funcには型が必要なので、outはそこでコンパイルされません。listFunctionを呼び出すにはintが必要で、out inは許可されません。 これを行う方法はありますか?
Web APIには、同様の構造のクラスがありました。 public class SomeController : ApiController { [WebGet(UriTemplate = "{itemSource}/Items")] public SomeValue GetItems(CustomParam parameter) { ... } [WebGet(UriTemplate = "{itemSource}/Items/{parent}")] public SomeValue GetChildItems(CustomParam parameter, SomeObject parent) { ... } } 個々のメソッドをマッピングできるため、適切な場所で適切なリクエストを取得することは非常に簡単でした。GETメソッドが1つだけで、Objectパラメーターも持つ同様のクラスの場合、を正常に使用しましたIActionValueBinder。ただし、上記の場合、次のエラーが発生します。 Multiple actions were found that match the request: SomeValue GetItems(CustomParam parameter) on type SomeType SomeValue GetChildItems(CustomParam parameter, SomeObject …
コレクションを反復処理するには、明らかに多くの方法があります。違いがあるかどうか、またはなぜ他の方法を使用するのか興味があります。 最初のタイプ: List<string> someList = <some way to init> foreach(string s in someList) { <process the string> } 他の方法: List<string> someList = <some way to init> someList.ForEach(delegate(string s) { <process the string> }); 私は頭の上で、上記で使用した匿名のデリゲートの代わりに、再利用可能なデリゲートを指定できると思います...