2012-05-17 32 views
0

我使用下面的代碼做Azure的緩存讀取蔚藍緩存數據,它工作正常...無法從不同的應用程序

[Serializable] 
public class Person 
{ 
    public string First { set; get; } 
    public string Last { set; get; } 

} 

[TestClass] 
public class AzureCachingTests1 
{ 
    private static DataCacheFactory _factory; 

    [TestInitialize] 
    public void Setup() 
    { 

     _factory = new DataCacheFactory(new DataCacheFactoryConfiguration("mycache")); 
    } 


    [TestMethod] 
    public void TestMethod1() 
    { 

     DataCache cache = _factory.GetDefaultCache(); 

     var person = new Person { First = "Jane", Last = "doe" }; 
     const string key = "mykey"; 

     cache.Put(key, person, TimeSpan.FromMinutes(10)); 
     var data = (Person)cache.Get(key); 
     Assert.AreEqual("Jane", data.First); 

    } 
} 
在Visual Studio的另一個實例

現在,我運行下面的代碼...

[TestClass] 
public class AzureCachingTests 
{ 
    private static DataCacheFactory _factory; 
    [TestInitialize] 
    public void Setup() 
    { 

     _factory = new DataCacheFactory(new DataCacheFactoryConfiguration("mycache")); 
    } 


    [TestMethod] 
    public void TestMethod1() 
    { 

     DataCache cache = _factory.GetDefaultCache(); 
     const string key = "mykey"; 
     var data = (Person) cache.Get(key); <----- Error here... <-------- 
     Assert.AreEqual("Jane", data.First); 

    } 
} 

[Serializable] 
public class Person 
{ 
    public string First { set; get; } 
    public string Last { set; get; } 

} 

這一次,我碰到下面的錯誤...

試驗方法AzureCaching.AzureCachingTests.TestMethod1拋出異常: System.Runtime.Seriali zation.SerializationException:未找到Assembly'AzureCaching1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。

我的課人是可序列化的。爲什麼我無法查詢緩存在AzureCaching1中的緩存?

請幫忙。謝謝

回答

2

除非您引用了AzureCachingTests1所在的項目,否則您的測試不知道如何反序列化它從緩存中檢索的項目。你有兩個具有相同名稱和相同屬性的類,但它們不是同一個類。

由於您正在編寫測試,因此您需要從AzureCachingTests所在的項目中引用AzureCachingTests1所在的項目,並刪除AzureCachingTests項目中Person的類定義(並確保您正在投射正確的課程也是如此)。

如果這不是一個測試,你只是想在兩個或多個項目之間共享一個類,最好的辦法是讓第三個項目包含所有這兩個類都通用的類,在這種情況下它只是Person類。