我想在plsql中获取参数的名称.
例如,
procedure sp_example(myParam in varchar2) is
paramName varchar2(30);
begin
paramName = 'myParam';
end
end procedure sp_example;
Run Code Online (Sandbox Code Playgroud)
有没有办法获得myParam使用反射的名称,而不是硬编码?
我正在业余时间制作一个对象验证框架来学习一些东西,并可能将它用于一些学校项目。
我有我的通用规则类,它看起来像这样:
class Rule<T>
{
string propertyName;
Func<T, bool> ruleLambda;
bool IsBroken(T value)
{
return ruleLambda(value);
}
}
Run Code Online (Sandbox Code Playgroud)
将被验证的对象看起来有点像这样:
class Example
{
List<Rule<?>> MyRules; // can take all types of rules
List<Rule<T>> Validate<T>(string propertyName, T value)
{
List<Rule<T>> brokenRules = new List<Rule<T>>();
foreach (Rule rule in MyRules.Where(r => r.propertyName == propertyName))
{
if (rule.IsBroken(value))
brokenRules.Add(rule);
}
return brokenRules;
}
}
Run Code Online (Sandbox Code Playgroud)
其中T value参数是 Example 类的属性之一的值,可以是任何类型。
Validate<T>只要设置了属性,就会调用该方法。
问题在于类的规则列表。特别是List<Rule<?>>上面的那一行。我想将给定类的所有规则存储在同一个列表中。
唉,C# 没有像 Java 那样的泛型类型的通配符。
我该怎么做?
使用对象而不是 T 的非通用接口或基类可以工作,但是我将如何调用通用 Rule …
我正在尝试列出msbuild项目的所有引用及其在磁盘上的位置.
到目前为止,我可以得到项目引用和程序集引用就好了,但我有与COM引用的麻烦.这是项目文件中大多数引用的样子:
<COMReference Include="[name of assembly]">
<Guid>{GUID-GOES-HERE}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
Run Code Online (Sandbox Code Playgroud)
我完全不知道如何获取COM DLL的路径.一些谷歌搜索告诉我,我可以查看HKEY_CLASSES_ROOT\CLSID\{GUID-FOUND-IN-PROJECT-FILE}\InprocServer32并获取密钥的默认值.当我使用regedit查看注册表时,它似乎是正确的,但每次我通过C#执行此操作时,注册表项始终为null.我也看了Wow6432Node\CLSID同样的结果.
谷歌搜索进一步显示了msbuild ResolveComReference任务以及如何使用Microsoft.Build命名空间以编程方式使用msbuild(ResolveComReference类),但我只发现如何使用此命名空间来构建整个项目,而不是执行单个任务.
如何使用项目文件中的信息获取COM DLL的位置?
编辑
这样做的原因是自动化我们的构建过程.一方面,这将让我们将COM DLL包含在我们的安装程序中(使用WiX的Heat工具或John Robbin的Paraffin工具).另一方面,它可以解决我们与msbuild的问题.我们让msbuild解决所有依赖关系.如果Project1和Project2都引用相同的COM DLL和Project1引用Project2,它会崩溃,因为它试图两次添加COM DLL.
有没有办法在Transact-SQL中创建后24小时自动删除行?
我正在创建一个网站(学习体验),用户需要在注册后点击通过电子邮件发送的验证链接.我希望用户在24小时内验证自己.
我想我需要的是一个触发器,但我真的不确定语法,也不确定它是否可行.