小编Chr*_*ard的帖子

如何获取调用方法的参数值?

我正在编写一些代码,需要能够从调用类的方法中获取参数的.我知道如何一直到ParameterInfo []数组,但我不知道如何获取值.这甚至可能吗?

如果是,我认为它与使用MethodInfo对象的MethodBody属性有关,它允许你检查IL流,包括属性,但我不知道怎么做,我还没找到适用于Google的代码.

// Finds calling method from class that called into this one
public class SomeClass
{
    public static void FindMethod()
    {
        for (int i = 1; i < frameCount; i++)
        {
            var frame = new StackFrame(i);
            var methodInfo = frame.GetMethod();
            if (methodInfo.DeclaringType != this.GetType())
            {
                string methodName = frame.GetMethod().Name;
                var paramInfos = methodInfo.GetParameters();

                // Now what?? How do I get the values from the paramInfos

                break;
            }
            else if (i == frameCount - 1) …
Run Code Online (Sandbox Code Playgroud)

c# reflection dynamic

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

SIMPLE-TLV与BER-TLV

我在docs中发现他们指的是SIMPLE-TLVBER-TLV.我查看了大多数EMV和GP文档,但他们没有提到不同的内容.

谁能帮助我理解两者的区别?

apdu nfc javacard

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

SQL Server 2005 For XML Explicit - 需要帮助格式化

我有一个表格,结构如下:

------------------------------
LocationID     | AccountNumber
------------------------------
long-guid-here | 12345
long-guid-here | 54321
Run Code Online (Sandbox Code Playgroud)

要传入另一个存储过程,我需要XML看起来像这样:

<root> 
    <clientID>12345</clientID>
    <clientID>54321</clientID>
</root>
Run Code Online (Sandbox Code Playgroud)

到目前为止我能做到的最好的就是这样:

<root clientID="10705"/>
Run Code Online (Sandbox Code Playgroud)

我正在使用这个SQL语句:

SELECT
    1 as tag,
    null as parent,
    AccountNumber as 'root!1!clientID'
FROM
    Location.LocationMDAccount
WHERE
    locationid = 'long-guid-here'
FOR XML EXPLICIT
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经查看了MSDN页面上的文档,但是我没有得到预期的结果.


@公斤,

你实际给了我这个输出:

<root>
  <Location.LocationMDAccount>
    <clientId>10705</clientId>
  </Location.LocationMDAccount>
</root>
Run Code Online (Sandbox Code Playgroud)

我现在要坚持FOR XML EXPLICIT克里斯莱昂.

xml sql formatting sql-server-2005 for-xml

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

动态获取参数类型的默认值

我试图动态获取ParameterInfo中指定的类型的默认值._methods [methodName]返回一个MethodInfo对象.

不幸的是,编译器不喜欢默认(paramType)中的"paramType"位.我很难过.

错误

找不到类型或命名空间名称'paramType'(您是否缺少using指令或程序集引用?)

C:\ Applications\...\MessageReceiver.cs第113行

object blankObject = null;
foreach (var paramInfo in _methods[methodName].Key.GetParameters())
{
    if (paramInfo.Name == paramName)
    {
        Type paramType = paramInfo.ParameterType;
        blankObject = (object)default(paramType);
    }
}
parameters[i] = blankObject;
Run Code Online (Sandbox Code Playgroud)

c# reflection dynamic

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

如何从.Net/C#调用Schannel函数

我试图在.Net中由于合规性原因(我想使用256位AES和临时密钥)重新排序/删除密码套件.但是,使用WCF TCP传输安全性,我将对安全性的所有控制权转移到Windows的TLS实现及其首选密码.我不想更改系统级密码.

我找到了这个很棒的Microsoft页面,它列出了如何在应用程序级别使用BCryptEnumContextFunctions,BCryptAddContextFunction,BCryptRemoveContextFunction来完成它,但它是所有C和我没有足够的P/Invoke经验来知道从哪里开始.我用谷歌搜索,但没有找到任何人这样做.

MSDN页面上的C++代码片段如下,我需要帮助将它们转换为.Net P/Invoke调用:

BCryptEnumContextFunctions

#include <stdio.h>
#include <windows.h>
#include <bcrypt.h>


void main()
{

   HRESULT Status = ERROR_SUCCESS;
   DWORD   cbBuffer = 0;
   PCRYPT_CONTEXT_FUNCTIONS pBuffer = NULL;

    Status = BCryptEnumContextFunctions(
        CRYPT_LOCAL,
        L"SSL",
        NCRYPT_SCHANNEL_INTERFACE,
        &cbBuffer,
        &pBuffer);
    if(FAILED(Status))
    {
        printf_s("\n**** Error 0x%x returned by BCryptEnumContextFunctions\n", Status);
        goto Cleanup;
    }

    if(pBuffer == NULL)
    {
        printf_s("\n**** Error pBuffer returned from BCryptEnumContextFunctions is null");
        goto Cleanup;
    }

    printf_s("\n\n Listing Cipher Suites ");
    for(UINT index = 0; index …
Run Code Online (Sandbox Code Playgroud)

.net c# ssl pinvoke schannel

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

如何将HRESULT从C#返回到C++而不是抛出异常?

目前我正在编写一个C#COM服务器,它将由C++客户端使用.我想在C#代码中引发特定异常时将某个HRESULT返回给C++代码,如下所示

// C# COM Server Code
public void MyMethod()
{
    try
    {
        //Some Processing 
    }
    catch(CertainException e)
    {
        //I pass in my Own HResult int to the my Custom Exception 
        MyCustomException ex = new MyCustomException(unchecked((int)0xc00491fe)); 
        throw ex;
    }
}

//C++ Code
HRESULT hr = pMyComInstance->MyMethod();
Run Code Online (Sandbox Code Playgroud)

我希望从我的C++代码获得的"hr"是我在C#代码中分配的int,但是我没有获得HRRESULT,而是在C++代码中仍然有例外.

我做错了什么吗?请帮忙..谢谢

.net c# exception com-interop hresult

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

在webclient意外结果中编码

我尝试使用webclient将单词'Banana'翻译成rus

private void button1_Click(object sender, EventArgs e)
    {
        Navigate("http://translate.google.ru/translate_a/t?client=x&text=Banana&hl=en&sl=en&tl=ru");
    }

    private void Navigate(String address)
    {
        WebClient client = new WebClient();            
        client.Proxy = WebRequest.DefaultWebProxy;
        client.Credentials = new NetworkCredential("user", "password", "domain");
        client.Proxy.Credentials = new NetworkCredential("user", "password", "domain");
        string _stranslate = client.DownloadString(new Uri(address));
    }
Run Code Online (Sandbox Code Playgroud)

我希望在"_stranslate"中看到

{"sentence":[{"trans":"Банан","orig":"Banana @","translit":"Banan @","src_translit":""}],"src":"en", "server_time":0}

但得到了这个

{"sentence":[{"trans":"вБОБО","orig":"Banana @","translit":"Banan @","src_translit":""}],"src":"en", "server_time":0}

有人能帮我吗?

c# encoding google-translate

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

部分声明不能指定不同的基类?

我看到其他一些人在其他问题中询问此错误消息,但我似乎并不了解为自己解决这个问题的原因.我通过WPF UserControl创建了这个错误

public partial class EnterNewRequest : UserControl
Run Code Online (Sandbox Code Playgroud)

但后来我想为UserControl添加一个方法,所以我使用继承将其粘贴在那里(不能使用扩展,因为我需要覆盖此方法).但是现在我的usercontrol很难过,我不确定xaml中我需要改变什么.UserControl更改块位于命名空间RCO_Manager中.这是我的xaml:

<UserControl x:Class="RCO_Manager.EnterNewRequest"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
Run Code Online (Sandbox Code Playgroud)

c# wpf inheritance xaml

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

RegEx匹配没有单个字母分隔符

Medicare资格EDI示例回应是我想要匹配的.

我有一个看起来像这样的字符串:

LN:SMITHbbbbbbbbFN:SAMANTHAbbBD:19400515PD:1BN:123456PN:9876543210GP:ABCDEFGHIJKLMNOID:123456789012345bbbbbPC:123PH:8005551212CD:123456PB:123ED:20060101TD:2070101LC:NFI:12345678FE:20070101FT:20080101

我需要一组看起来像这样的匹配:

Key | Value
-------------------
LN  | SMITHbbbbbbbb
FN  | SAMANTHAbb
BD  | 19400515
... etc

我整天都在处理这个问题,而且似乎无法获得可接受的匹配方案.我打算用for循环编程它,如果我想不出来就找到冒号的索引.

我尝试过使用负向前瞻,但我没有到达任何地方.这是C#,我正在测试时使用这个测试器(.Net)和The Regex Coach(非.Net).

我试过用这个:

([\w]{2})\:(?![\w]{2}\:)
Run Code Online (Sandbox Code Playgroud)

但这只匹配键和它们的冒号,如"LN:","FN:"等.

如果我使用:

([\w]{2})\:(.+?)([\w]{2})\:
Run Code Online (Sandbox Code Playgroud)

它也消耗下一个匹配的两个字符键和冒号,导致我只匹配每个其他键/值对.

有没有办法让我在.Net中使用RegEx正确匹配这些,或者我是否坚持使用更程序化的解决方案?请记住,我不能认为键总是大写字母.它们可能包含数字,但它们总是两个字符,然后是冒号.

提前感谢您提供的任何帮助.

c# regex lookahead negative-lookahead

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