私は本当に奇妙な問題があります。私は、新しいコンソールアプリケーションを作成し、コードを入れても私のソリューションで新しいコンソールアプリケーションを作成し、同じコードを正確に貼り付けている場合は、以下のコードはうまく動作します。こんにちは。私の既存の解決策では、コードはTryGetMember()に決して行きません。c#あるソリューションから別のソリューションへの動的な振る舞い
これは本当に私を悩ましています。ソリューションは大きすぎて新しいソリューションに移行することはできませんが、それを修正するとは確信していません。すべての参照が機能しないコンソールアプリケーションでは、動作するアプリケーションと同じです。唯一の違いは解決策ではないということです。全体のソリューションはダイナミクスと同じように動作しています。面白いのはこれが動作していたのですが、突然停止するので、私はこの単純なプログラムを作成して理論をテストします。
編集:デバッガを接続しないと、ソリューションで動作しないアプリケーションが正常に動作します(Ctrl + F5)。
アイデア?
using System.Collections;
using System.Collections.Generic;
using System.Dynamic;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
IDictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary["hello"] = "world";
dynamic d = new MyDynamicModel(dictionary);
var a = d.hello;
}
}
public class MyDynamicModel : DynamicObject
{
private IDictionary<string, object> Values { get; set; }
public MyDynamicModel(IDictionary<string, object> dict)
{
Values = dict;
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
return Values.TryGetValue(binder.Name, out result);
}
}
}
これは正常にあなたのコード –
の辞書に値が辞書に追加されているかどうかをチェックします。 - 作業中のプロジェクトをソリューションにインポートするとうまく動作しません – Jon
DynamicObjectは実際のコードで使用しているタイプですか?これは主に内部メンバーのアクセシビリティで起こります... –