小编cyb*_*nte的帖子

C#反射:在解决方案中获取*所有*活动程序集?

继承人我的问题:

我有两个项目 - 一个'常见'项目,其行为类似于具有各种支持代码的库,以及在许多调用中使用该项目的实际程序.我们将这些项目称为"共同"和"程序".他们都在同一个解决方案中.

在"Common"中,我有一个用于commo反射任务的类,比如创建一个实例.如果我调用GetExecutingAssembly,它将获得所有"公共"类型,但是当我使用GetEntryAssembly时,我得到"程序"类型.

虽然我当然可以编辑代码以使用2套asm,但我担心解决方案中不仅仅有2个项目的情况 - 比方说5(不知道为什么,但让我们去那里现在),我担心调用GetExecutingAssembly和GetEntryAssembly不会获得整个程序中的所有类型.

还有其他方法可以让所有类型都在解决方案中吗?

c# reflection

27
推荐指数
4
解决办法
4万
查看次数

更好的方法来检测XML?

目前,我有以下c#代码从文本中提取值.如果是XML,我想要其中的值 - 否则,如果它不是XML,它只能返回文本本身.

String data = "..."
try
{
    return XElement.Parse(data).Value;
}
catch (System.Xml.XmlException)
{
    return data;
}
Run Code Online (Sandbox Code Playgroud)

我知道C#中的异常是昂贵的,所以我想知道是否有更好的方法来确定我正在处理的文本是否是xml?

我想到了正则表达式测试,但我不认为这是一个更便宜的替代方案.请注意,我要求一种更便宜的方法.

c# xml optimization xml-parsing

24
推荐指数
3
解决办法
1万
查看次数

什么使实例成员线程不安全vs公共静态?

所以我们都在MSDN上看到了许多可用通用对象的Threading通知:

"此类型的公共静态(在Visual Basic中为Shared)成员是线程安全的.任何实例成员都不保证是线程安全的."

我的问题是,作为一个实例变量与公共静态有什么关系使它不安全?

.net c# thread-safety

20
推荐指数
3
解决办法
6713
查看次数

在调试PHP时Eclipse以完整路径打开文件

我有一个本地PHP服务器,xdebug与Xdebug JIT设置一起安装xdebug.除了一个非常烦人的问题,一切都很好.

问题是每次我在PHP脚本中遇到断点时,Eclipse都会打开带有完整路径的php文件,而不是工作区相对的.这会创建两个打开的文件,这不是问题,除了绝对文件中的设置断点没有在代码选项卡中正确显示(它们显示在断点列表中),以及设置或删除不同文件之间的断点是特定于路径的 - 因此您无法与其他文件表示中的断点进行交互.此外,跳转到新文件将在同一选项卡中打开.我想eclipse使用我已经打开的选项卡,我认为如果它没有使用绝对路径打开文件会发生.

我已经尝试在PHP服务器配置中设置路径映射,但它们似乎没有任何影响.我愿意接受任何建议.

谢谢!

php eclipse xdebug

14
推荐指数
1
解决办法
459
查看次数

奇怪的"集合在枚举器实例化后被修改"异常

也许有人可以指出我正确的方向,因为我完全被这个困扰了.

我有一个函数,只是打印出一个LinkedList类:

    LinkedList<Component> components = new LinkedList<Component>();
    ...
    private void PrintComponentList()
    {
        Console.WriteLine("---Component List: " + components.Count + " entries---");
        foreach (Component c in components)
        {
            Console.WriteLine(c);
        }
        Console.WriteLine("------");
    }
Run Code Online (Sandbox Code Playgroud)

Component对象实际上有一个自定义ToString()调用:

    int Id;
    ...
    public override String ToString()
    {
        return GetType() + ": " + Id;
    }
Run Code Online (Sandbox Code Playgroud)

这个函数通常工作正常 - 但是我遇到的问题是当它在列表中构建大约30个左右的条目时,该PrintcomplentList foreach语句会返回InvalidOperationException: Collection was modified after the enumerator was instantiated.

现在您可以看到我没有修改for循环中的代码,并且我没有显式创建任何线程,尽管这是在XNA环境中(如果它很重要).应该注意的是,打印输出频繁,控制台输出整体上减慢了程序的速度.

我完全难过了,有没有其他人遇到这个?

c# enumeration

12
推荐指数
1
解决办法
3万
查看次数

c#,内部和反思

有没有办法通过反射执行"内部"代码?

这是一个示例程序:

using System;
using System.Reflection;

namespace ReflectionInternalTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly asm = Assembly.GetExecutingAssembly();

            // Call normally
            new TestClass();

            // Call with Reflection
            asm.CreateInstance("ReflectionInternalTest.TestClass", 
                false, 
                BindingFlags.Default | BindingFlags.CreateInstance, 
                null, 
                null, 
                null, 
                null);

            // Pause
            Console.ReadLine();
        }
    }

    class TestClass
    {
        internal TestClass()
        {
            Console.WriteLine("Test class instantiated");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

创建一个测试类通常是完美的,但是当我尝试通过反射创建一个实例时,我得到一个missingMethodException错误,说它无法找到构造函数(如果你尝试从程序集外部调用它会发生什么).

这是不可能的,还是我可以做一些解决方法?

c# reflection internal

1
推荐指数
1
解决办法
1万
查看次数

XNA中"包含"究竟是什么意思?

一个非常具体的问题,如果有人知道答案:在BoundingSphere1.Contains(BoundingSphere2)的上下文中,"包含"究竟是什么意思?

如果我在一个较大的球体内有一个较小的球体,较小的球体是否"包含"较大的球体,因为它的整个体积也是较大球体的体积?会返回ContainmentType.Contains吗?

谢谢!

c# xna

1
推荐指数
1
解决办法
1238
查看次数