我有一个PowerShell脚本,它检查某个目录是否在PATH上(通过查看$ env:path).看起来$ env:path在启动时被每个应用程序加载并本地作用域,并且该作用域被传递给任何子应用程序.所以...如果有人打开Firefox,下载我的程序,运行它,得到一条消息,他们应该改变路径,修复问题,然后再从Firefox下载窗口运行程序,他们会得到相同的消息,除非他们从资源管理器启动我的程序或重启Firefox.
有没有办法在我的PowerShell脚本中重新加载$ env:path,这样它就会得到当前值,好像它是从资源管理器打开的?
我正在编写一些库代码,并且使用该代码的类需要指定两个属性(一个自定义属性和一个来自 .NET 的属性)。
记录此要求并将这两个属性复制并粘贴到使用我的库的每个类上有点麻烦,因此我认为让我的自定义属性仅暗示另一个属性的存在可能会更好。不过,.NET 框架中的其他属性是密封的,所以我不能只是继承它......
那么有什么办法可以做到这一点吗?我可以在运行时添加 .NET 属性吗?
谢谢。
我是第一次写WCF服务.该服务及其所有客户端(至少目前为止)都是用C#编写的.该服务必须对传递的数据进行大量输入验证,因此我需要有一些方法将无效数据指示回客户端.我一直在阅读很多关于错误和异常,包含错误中的异常,以及许多相互矛盾的文章.处理这种情况的正确方法是什么?
我应该完全避免异常并打包结果返回消息吗?我应该创建一个特殊的错误,或一个特殊的异常,或者只是像非WCF验证函数一样抛出ArgumentExceptions?
我现在的代码(受MSDN影响)是:
[DataContract]
public class ValidationFault
{
[DataMember]
public Dictionary<string, string> Errors { get; private set; }
[DataMember]
public bool Fatal { get; private set; }
[DataMember]
public Guid SeriesIdentifier { get; private set; }
public ValidationFault(Guid id, string argument, string error, bool fatal)
{
SeriesIdentifier = id;
Errors = new Dictionary<string, string> {{argument, error}};
Fatal = fatal;
}
public void AddError(string argument, string error, bool fatal)
{
Errors.Add(argument, error);
Fatal |= fatal;
}
}
Run Code Online (Sandbox Code Playgroud)
在方法上有[FaultContract(typeof(ValidationFault))].这是解决这个问题的"正确"方法吗?
我有一个函数,除其他外,它接受一个对象和一个类型,并将该对象转换为该类型.但是,输入对象通常是double,并且类型有一些int(uint,long等)的变体.如果圆数作为double传递(如4.0),我想要这个工作,但如果在(4.3)中传入小数则抛出异常.有没有更优雅的方法来检查Type是否是某种int?
if (inObject is double && (targetType == typeof (int)
|| targetType == typeof (uint)
|| targetType == typeof (long)
|| targetType == typeof (ulong)
|| targetType == typeof (short)
|| targetType == typeof (ushort)))
{
double input = (double) inObject;
if (Math.Truncate(input) != input)
throw new ArgumentException("Input was not an integer.");
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
c# ×3
.net ×1
attributes ×1
casting ×1
exception ×1
inheritance ×1
powershell ×1
reflection ×1
types ×1
validation ×1
wcf ×1