Der folgende Code funktioniert hervorragend. Wenn sich die Methoden Get
und Use
in verschiedenen Assemblys befinden, schlägt der Code mit einer RuntimeBinderException fehl. Dies ist darauf zurückzuführen, dass das .NET-Laufzeitsystem nur innerhalb von Baugruppen die Anonymität von Typen (<string, int>
) garantiert.Geben Sie dynamisch anonymen Typ über Baugruppengrenzen zurück/konsumieren
Gibt es eine Möglichkeit, das Laufzeitsystem zu täuschen, um dies zu überwinden? Ich kann das Objekt im Debugger auf der Seite Use
untersuchen, und der Debugger kann die relevanten Eigenschaften sehen.
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 };
}
}
Der Link, der auf den Beitrag zeigt, ist gebrochen –
Lösung "1" in der obigen Post ist eigentlich ziemlich interessant. Grundsätzlich [assembly: InternalsVisibleTo ("SomeOtherAssembly")] in Ihrer Assemblyinfo.cs funktioniert ziemlich gut. – OFConsulting