我有点不确定如何将标题写入这个问题,但我正在寻找VB.NET中的最短/最终方式(或C#,但目前使用VB.NET)来获取方法的字符串值在方法调用时动态命名.
例如,我有一个这样的类:
Public Class Blah
Public Sub Foo()
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
现在,Foo是动态设置的强类型封面,我有一个事件处理程序,当设置更改时将触发该事件处理程序,并返回更改的设置的字符串名称.
我希望能够在这个字符串上切换/选择一个基于Foo()方法的案例.为此,我需要能够从方法调用本身获取Foo方法的字符串名称(即以某种方式GetMethodName(blahInstance.Foo())).
这有点类似于这个问题.
但是,我不想一直隐藏列,而只是想隐藏List.aspx页面上的列.
我的具体示例是,长(或至少nvarchar(MAX))字段会自动从List.aspx页面隐藏,但在Edit.aspx页面上仍然可见.
我想为其他(较短)列复制此行为.
这可能吗?
我可能忽略了一些非常简单的东西,但我试图将所有错误的URL重定向到根据条件过滤URL的操作,然后301重定向到合适的页面或发出404页面.
为此,我在路由表的末尾有这样的路由:
routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" });
Run Code Online (Sandbox Code Playgroud)
这样的动作:
public ActionResult Error(string url)
{
if (/* Conditions are met... */)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", /* Destination URL */);
Response.End();
}
Response.StatusCode = 404;
return View(/* 404 page... */));
}
Run Code Online (Sandbox Code Playgroud)
这在当地非常有效.
但是,当部署到IIS6时,不包含.mvc(例如oldfile.php)的URL永远不会发送到ASP.NET进程进行路由.
有一个简单的解决方案/我忽略了什么吗?
编辑:这与此问题有关,但在IIS6下,没有.mvc的URL不会被发送用于ASP.NET MVC处理.
这是一个懒惰的问题,但你得到了代表:-)
我有一个Java类,它返回自身的实例以允许链接(例如ClassObject.doStuff().doStuff())
例如:
public class Chainer
{
public Chainer doStuff()
{
/* Do stuff ... */
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
我想扩展这个课程.有没有办法,也许使用泛型,扩展这个类而不必覆盖每个方法签名?
不是:
public class ChainerExtender extends Chainer
{
public ChainerExtender doStuff()
{
super.doStuff();
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
我试过了:
public class Chainer
{
public <A extends Chainer> A doStuff()
{
/* Do stuff ... */
return (A)this;
}
}
public class ChainerExtender extends Chainer
{
public <A extends Chainer> A doStuff()
{
/* Do stuff ... */
return super.doStuff();
}
} …Run Code Online (Sandbox Code Playgroud) 我无法弄清楚如何获取事件的参数类型.
例如,我只能看到使用MethodInfo来获取参数,但我有一个EventInfo或FieldInfo.
我想要的是能够从这里得到'布尔':
Public Event EventName(ByVal sender As Object, ByVal value As Boolean)
Run Code Online (Sandbox Code Playgroud)
我理论上可以尝试类似GetRaiseMethod()的东西,但这不起作用(因为该方法根据此链接返回null ),即使它确实需要首先进行方法绑定,这意味着只需要确认测试套件事件在初始化时具有某个类型参数.
有任何想法吗?
当你有一个名为与类型相同的局部变量时,有没有办法告诉编译器你给出的符号是一个类型还是一个变量?例如考虑(并忽略所有类型的返回错误):
public class sometype { public static sometype DoSomething() {} }
public string sometype { get { return sometype.DoSomething(); } } //A
public string sometype { get { return sometype.Trim(); } } //B
public sometype sometype { get { return sometype.DoSomething(); } } //C
public sometype sometype { get { return sometype.Trim(); } } //D
Run Code Online (Sandbox Code Playgroud)
(如果XSD让你烦恼,你可能想跳过这个):
我目前正在努力让LINQ到XSD工作.在我的XSD文件中有xs:这样的元素:
<xs:element name="car" type="car">
Run Code Online (Sandbox Code Playgroud)
'car'类型被定义为这样的simpleType
(可能还有一些限制,但这本质上是它):
<xs:simpleType name="car">
<xs:restriction base="xs:string" /> …Run Code Online (Sandbox Code Playgroud) 假设我有一个名为"DataSheet.xls"的Excel文件打开.如何使用c#杀死该Excel文件?
这应该是一个非常微不足道的.
C#可以返回"强制转换"类型,即以下失败的类型:
private ICollection<string> _strings = new List<string>();
public IEnumerable<string> Strings
{
get
{
return ((IEnumerable<string>)_strings);
}
}
/* I should not know that Strings can be cast to ICollection */
public void AddToStrings()
{
ICollection<string> st = ((ICollection<string>)Strings); /* I should fail */
st.Add("MyString");
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做:
public IEnumerable<string> Strings
{
get
{
return ((IEnumerable<string>)_strings.ToArray());
}
}
Run Code Online (Sandbox Code Playgroud)
但这似乎是(1)不必要的,(2)仍然不会阻止他们投入ICollection,只是添加和(3)我只是对一般问题感到好奇.
有些人似乎不确定我想在这里实现什么.我试图阻止外部课程违反我提供的合同.我没有说过Strings是一个ICollection - 它恰好发生在我内部使用它 - 因此没有外部类应该能够将我返回的变量视为ICollection.我不想向它们公开修改行为,我不希望它们将我的变量视为ICollection,以防我以后改变生成IEnumerable的方式.
更一般地说,我可以将对象作为其特定类型之一的实例返回,并防止以后转换为其更常规类型之一.例如,虽然你可以产生一个新的IEnumerable,你可以返回一个IDisposable对象,它不能被转换回它的任何类型(即只有Dispose()和对象方法可调用)?
由于有许多编程语言可用于开发Web应用程序.在不查看源代码的情况下,有哪些方法可以确定Web应用程序是用Java编写的?
C#编译器中发生了什么导致以下模糊调用编译错误?
同样的问题适用于扩展方法,或者何时TestClass是通用的并且使用实例而不是静态方法.
我意识到它很容易解决(例如secondInstance转换Test1为方法调用)但我更好奇编译器为方法选择应用了什么逻辑.
我的假设是编译器在方法检测上应用某种程度的特异性度量(如CSS)以确定最具体的匹配 - 这是无效的吗?
class Type1 { }
class Type2 : Type1 {}
class TestClass
{
public static void Do<T>(T something, object o) where T : Type1
{}
public static void Do(Type1 something, string o)
{}
}
void Main()
{
var firstInstance = new Type1();
TestClass.Do(firstInstance, new object()); // Calls Do<T>(T, obj)
TestClass.Do(firstInstance, "Test"); // Calls Do(Type1, string)
var secondInstance = new Type2();
TestClass.Do(secondInstance, new object()); // Calls Do<T>(T, obj)
TestClass.Do(secondInstance, "Test"); …Run Code Online (Sandbox Code Playgroud) c# ×6
java ×2
reflection ×2
vb.net ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
dynamic-data ×1
excel-2007 ×1
generics ×1
iis-6 ×1
jsp ×1
linq-to-xsd ×1
redirect ×1
types ×1