我有一個非常奇怪的問題。下面的代碼工作正常,如果我創建一個新的控制檯應用程序並將代碼放入,但如果我在我的解決方案中創建一個新的控制檯應用程序,並粘貼完全相同的代碼,我得到一個運行時聯編程序異常動態不包含定義你好。奇怪的事情是在我現有的解決方案中,代碼永遠不會進入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是您在真實代碼中使用的類型嗎?這種情況發生的主要時間是內部成員的可訪問性... –