क्यों गैर स्थैतिक विधि PrintDomain वर्तमान डोमेन निष्पादित किया जाता है MarshalByRefObject जब कार्यकर्ता वर्ग चिह्नित है?
चूंकि एमबीआरओ करता है, यह आपके प्राथमिक एपडोमेन में बनाए गए ऑब्जेक्ट के लिए प्रॉक्सी बनाता है। द्वितीयक एपडोमेन से उस वस्तु को कौन सा मार्शल करता है जो ऑब्जेक्ट का मालिक होता है, प्राथमिक एपडोमेन।
गैर-स्थैतिक विधि प्रिंटडॉमेन एक नए ऐपडोमेन में क्यों निष्पादित किया जाता है जब वर्कर वर्ग को सीरियलज़ेबल चिह्नित किया जाता है?
क्योंकि उस परिदृश्य नहीं करता है एक प्रॉक्सी का उपयोग करें। ऑब्जेक्ट को प्राथमिक से माध्यमिक एपडोमेन तक मार्शल किया जाता है। संभव है क्योंकि आपने इसे [Serializable] चिह्नित किया है। इसलिए कॉल द्वितीयक एपडोमेन में निष्पादित होता है।
क्यों स्थिर विधि किसी भी निशान की जरूरत नहीं है?
यह स्पष्ट नहीं है कि "चिह्न" से आपका क्या मतलब है, लेकिन यह एक स्थिर विधि के लिए अलग नहीं है।
using System;
class Program {
static void Main(string[] args) {
var dom = AppDomain.CreateDomain("Test");
var obj = new WorkerMbro();
dom.DoCallBack(obj.PrintDomain);
dom.DoCallBack(obj.PrintDomainStatic);
Console.ReadLine();
}
}
[Serializable]
class WorkerMbro /* : MarshalByRefObject */ {
public void PrintDomain() {
Console.WriteLine(AppDomain.CurrentDomain.FriendlyName);
}
public void PrintDomainStatic() {
Console.WriteLine(AppDomain.CurrentDomain.FriendlyName);
}
}
आउटपुट के रूप में तैनात:
Test
Test
तो निकाली गई टिप्पणियां साथ आउटपुट प्रॉक्सी प्रयोग किया जाता है:, साथ खेलने के लिए आधार वर्ग पर टिप्पणी को निकालने के कुछ कोड दो स्थितियों की तुलना करने के
ConsoleApplication1.vshost.exe
ConsoleApplication1.vshost.exe
स्रोत
2013-05-23 21:08:04
आपकी विधि 'PrintDomainStatic' स्थिर नहीं है। जब प्रॉक्सी का उपयोग किया जाता है ('मार्शलबीरफॉब्जेक्ट 'असम्बद्ध) आउटपुट' ConsoleApplication1.vshost.exe टेस्ट' है – Troopers