通过C#交互式访问“内部”类 - c#

使用VS2015中的C#交互式控制台,我想访问标记为internal的属性和类。通常,这是通过将InternalsVisibleAttribute添加到相关项目来完成的。香港专业教育学院试图添加csc.exe作为“朋友”程序集,但我仍然有访问问题。

这是通过C#交互式控制台访问内部类成员的正确方法吗?
如果是,我需要什么dll / exe才能使内部结构可见?

参考方案

这是可能的,但是我不确定为什么需要这样做。类型是内部的,这是有原因的。这是可以做到的-

使用以下代码创建控制台应用程序-

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
    }
}

添加内部类-

internal class MyClass
{
    internal string MyMethod()
    {
        return "Hello world!";
    }
}

建立您的解决方案。
在您的C#交互式窗口中-

>#r "C:\Users\...\Project.dll"
>using System;
>using System.Reflection;
>Assembly assembly = >Assembly.LoadFrom("C:\Users\...\Project.dll");
> Object mc = assembly.CreateInstance("AccessInternal.MyClass");
> Type t = mc.GetType();
> BindingFlags bf = BindingFlags.Instance | BindingFlags.NonPublic;
> MethodInfo mi = t.GetMethod("MyMethod", bf);
> string result = (string)mi.Invoke(mc, null);
> Console.WriteLine(result);
Hello world!
>

注意:鉴于这是c#交互式窗口,因此不会加载目标组件的依赖对象,即,如果您的程序集引用内部方法中引用的其他程序集,则除非执行,否则c#Interactive将无法执行方法,除非它可以访问那些程序集并可以加载它们。

与哪些运算符>>兼容 - java

我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…

>> Python中的运算符 - python

>>运算符做什么?例如,以下操作10 >> 1 = 5有什么作用? 参考方案 它是右移运算符,将所有位“右移”一次。二进制10是1010移到右边变成0101这是5

Python 3运算符>>打印到文件 - python

我有以下Python代码编写项目的依赖文件。它可以在Python 2.x上正常工作,但是在使用Python 3进行测试时会报告错误。depend = None if not nmake: depend = open(".depend", "a") dependmak = open(".depend.mak&#…

无法解析Json响应 - php

我正在尝试解析一个包含产品类别的JSON文件,然后解析这些类别中的产品,并在div中显示它们。我的问题:虽然我可以获取类别,但我不知道如何索取产品(并将它们显示在类别下)。我的剧本:<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> …

在xpath中选择多个条件 - php

我正在尝试使用来自高尔夫比赛的xml提要,以显示每个高尔夫球手在高尔夫球场上的位置。目前,我想展示符合两个条件的所有高尔夫球手(排在前25名,以及所有加拿大高尔夫球手)。这是xml提要的示例。<GolfDataFeed Type="Leaderboards" Timestamp="3/21/2012 9:18:09 PM&…