Mã bên dưới hoạt động rất tốt. Nếu các phương thức Get
và Use
nằm trong các hội đồng khác nhau, mã không thành công với RuntimeBinderException. Điều này là do hệ thống runtime .Net chỉ đảm bảo tính phổ biến của các loại vô danh (<string, int>
trong trường hợp này) trong các assembly.Trả lại/tiêu thụ loại ẩn danh động trên các ranh giới lắp ráp
Có cách nào để đánh lừa hệ thống thời gian chạy để khắc phục điều này không? Tôi có thể kiểm tra đối tượng trong trình gỡ lỗi ở bên Use
và trình gỡ lỗi có thể xem các thuộc tính có liên quan.
class Program
{
static void Main(string[] args)
{
UsePerson();
Console.ReadLine();
}
public static void UsePerson()
{
var person = GetPerson();
Console.WriteLine(person.Name);
}
public static dynamic GetPerson()
{
return new { Name = "Foo", Age = 30 };
}
}
Liên kết trỏ đến bài đăng bị hỏng –
Giải pháp "1" trong bài đăng trên thực sự khá thú vị. Về cơ bản [assembly: InternalsVisibleTo ("SomeOtherAssembly")] trong assemblyinfo.cs của bạn hoạt động khá tốt. – OFConsulting