继承人我的问题:
我有两个项目 - 一个'常见'项目,其行为类似于具有各种支持代码的库,以及在许多调用中使用该项目的实际程序.我们将这些项目称为"共同"和"程序".他们都在同一个解决方案中.
在"Common"中,我有一个用于commo反射任务的类,比如创建一个实例.如果我调用GetExecutingAssembly,它将获得所有"公共"类型,但是当我使用GetEntryAssembly时,我得到"程序"类型.
虽然我当然可以编辑代码以使用2套asm,但我担心解决方案中不仅仅有2个项目的情况 - 比方说5(不知道为什么,但让我们去那里现在),我担心调用GetExecutingAssembly和GetEntryAssembly不会获得整个程序中的所有类型.
还有其他方法可以让所有类型都在解决方案中吗?
目前,我有以下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?
我想到了正则表达式测试,但我不认为这是一个更便宜的替代方案.请注意,我要求一种更便宜的方法.
所以我们都在MSDN上看到了许多可用通用对象的Threading通知:
"此类型的公共静态(在Visual Basic中为Shared)成员是线程安全的.任何实例成员都不保证是线程安全的."
我的问题是,作为一个实例变量与公共静态有什么关系使它不安全?
我有一个本地PHP服务器,xdebug与Xdebug JIT设置一起安装xdebug.除了一个非常烦人的问题,一切都很好.
问题是每次我在PHP脚本中遇到断点时,Eclipse都会打开带有完整路径的php文件,而不是工作区相对的.这会创建两个打开的文件,这不是问题,除了绝对文件中的设置断点没有在代码选项卡中正确显示(它们显示在断点列表中),以及设置或删除不同文件之间的断点是特定于路径的 - 因此您无法与其他文件表示中的断点进行交互.此外,跳转到新文件将在同一选项卡中打开.我想eclipse使用我已经打开的选项卡,我认为如果它没有使用绝对路径打开文件会发生.
我已经尝试在PHP服务器配置中设置路径映射,但它们似乎没有任何影响.我愿意接受任何建议.
谢谢!
也许有人可以指出我正确的方向,因为我完全被这个困扰了.
我有一个函数,只是打印出一个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环境中(如果它很重要).应该注意的是,打印输出频繁,控制台输出整体上减慢了程序的速度.
我完全难过了,有没有其他人遇到这个?
有没有办法通过反射执行"内部"代码?
这是一个示例程序:
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错误,说它无法找到构造函数(如果你尝试从程序集外部调用它会发生什么).
这是不可能的,还是我可以做一些解决方法?
一个非常具体的问题,如果有人知道答案:在BoundingSphere1.Contains(BoundingSphere2)的上下文中,"包含"究竟是什么意思?
如果我在一个较大的球体内有一个较小的球体,较小的球体是否"包含"较大的球体,因为它的整个体积也是较大球体的体积?会返回ContainmentType.Contains吗?
谢谢!
c# ×6
reflection ×2
.net ×1
eclipse ×1
enumeration ×1
internal ×1
optimization ×1
php ×1
xdebug ×1
xml ×1
xml-parsing ×1
xna ×1