Tôi muốn biết nếu tôi có thể cho biết appdomain một đối tượng đã được tạo ra. Đây là một bài kiểm tra đơn vị nhưng cũng có kiến thức chung hữu ích. Tôi có các đoạn mã sau đây (đây là mã ví dụ minh họa).Có thể biết một đối tượng có đang chạy trong một AppDomain khác không?
public Foo Create()
{
AppDomainSetup appDomainSetup =
new AppDomainSet { ApplicationBase = @"z:\SomePath" }
AppDomain appDomain =
AppDomain.CreateDomain("DomainName", null, appDomainSetup);
return (Foo) appDomain.CreateInstanceAndUnwrap("MyAssembly", "MyClass");
}
sau đó tôi gọi
Foo myFoo = Create();
Những gì tôi muốn để có thể làm là tìm hiểu những gì phương pháp AppDomain trên myFoo sẽ được gọi trong, để kiểm tra rằng Create phương pháp đã thực sự tạo ra một mới AppDomain. Tôi nhận ra rằng tôi có thể thêm một phương pháp trên Foo như
public class Foo
{
public string appDomainName
{
get { return AppDomain.CurrentDomain.FriendlyName; }
}
}
Điều này sẽ cung cấp cho tôi appdomain rằng Foo đang chạy. Tôi không nghĩ rằng đây là một giải pháp thanh lịch chỉ dành riêng cho một bài kiểm tra đơn vị. Nó sẽ là tuyệt vời nếu ai đó có thể giúp xác định một phương pháp như thế nào.
public string GetAppDomainNameWithDotNetWitchcraft(Foo myFoo)
{
// Insert voodoo here.
}
EDIT: Cảm ơn phản hồi và nhận xét. Câu hỏi mà tôi đã hỏi đã được trả lời và những bình luận đã giúp tôi nhận ra nơi tôi đã đi sai. Những gì tôi thực sự đã cố gắng đạt được là để kiểm tra rằng một AppDomain mới được tạo ra.
Thú vị. Tôi không nghĩ về điều đó. –
Tôi không bận tâm chút nào về việc chơi game. Điều đó rất hữu ích. Mặc dù nếu tôi thấy rằng trong một bài kiểm tra đơn vị nó có mùi thiết kế :) – btlog
@btlog - Tôi tò mò về cách tìm hiểu xem một đối tượng có nằm trong một AppDomain khác không là mùi thiết kế, nhưng viết một bài kiểm tra đơn vị để đảm bảo nó là không 't (nếu bạn hiểu ý nghĩa của tôi)? –