需要访问其分配的扩展方法的动态变量 class
Dynamic variable that needs to access an extension method of it's assigned class
如果我有一个扩展方法,例如:
public static void StringExtensionTest(this string stringer) { MessageBox.Show("This is just a test for Whosebug"); }
使用简单的测试代码,例如:
private void button1_Click(object sender, EventArgs e)
{
string overflow = "Only a test";
dynamic overflowed = "Only a test";
overflow.StringExtensionTest();
overflowed.StringExtensionTest();
}
如何让 overflowed.StringExtensionTest() 工作?在此示例中,我不想使用明显的字符串转换。
后面在实际项目中,我会有多个不同类型的对象,我会把它们赋值给一个动态变量,然后调用我在所有这些中添加的公共扩展方法类。
您正在从动态中获取字符串,但它不会在运行时转换为字符串类型使用以下代码,它将提供帮助和测试。
private void button2_Click(object sender, EventArgs e)
{
Test.overflow.StringExtensionTest();
((string)Test.overflowed).StringExtensionTest();
}
public static class Test
{
public static string overflow = "Only a test";
public static dynamic overflowed = "Only a test";
public static void StringExtensionTest(this string stringer) { MessageBox.Show("This is just a test for Whosebug"); }
}
第一次对话
第二次对话
如果在同一个 class 中定义了每种可能类型的扩展方法,那么您可以将其作为静态方法调用:
SomeClass.StringExtensionTest(overflow);
否则,扩展方法在 dynamic
的上下文中没有多大意义。扩展方法将方法添加到可能找到的方法集中,具体取决于调用所在的 C# 文件中使用的命名空间。在 运行 代码中没有等同于命名空间或 C# 文件的东西。
如果我有一个扩展方法,例如:
public static void StringExtensionTest(this string stringer) { MessageBox.Show("This is just a test for Whosebug"); }
使用简单的测试代码,例如:
private void button1_Click(object sender, EventArgs e)
{
string overflow = "Only a test";
dynamic overflowed = "Only a test";
overflow.StringExtensionTest();
overflowed.StringExtensionTest();
}
如何让 overflowed.StringExtensionTest() 工作?在此示例中,我不想使用明显的字符串转换。
后面在实际项目中,我会有多个不同类型的对象,我会把它们赋值给一个动态变量,然后调用我在所有这些中添加的公共扩展方法类。
您正在从动态中获取字符串,但它不会在运行时转换为字符串类型使用以下代码,它将提供帮助和测试。
private void button2_Click(object sender, EventArgs e)
{
Test.overflow.StringExtensionTest();
((string)Test.overflowed).StringExtensionTest();
}
public static class Test
{
public static string overflow = "Only a test";
public static dynamic overflowed = "Only a test";
public static void StringExtensionTest(this string stringer) { MessageBox.Show("This is just a test for Whosebug"); }
}
第一次对话
第二次对话
如果在同一个 class 中定义了每种可能类型的扩展方法,那么您可以将其作为静态方法调用:
SomeClass.StringExtensionTest(overflow);
否则,扩展方法在 dynamic
的上下文中没有多大意义。扩展方法将方法添加到可能找到的方法集中,具体取决于调用所在的 C# 文件中使用的命名空间。在 运行 代码中没有等同于命名空间或 C# 文件的东西。