我遇到了一些语法问题。我对界面并不熟悉,请原谅我的无知。
VS2010在... application.Name = System.AppDomain.CurrentDomain.FriendlyName;
public static void AddApplication(string applicationName = null, string processImageFileName = null)
{
INetFwAuthorizedApplications applications;
INetFwAuthorizedApplication application;
if(applicationName == null)
{
application.Name = System.AppDomain.CurrentDomain.FriendlyName;/*set the name of the application */
}
else
{
application.Name = applicationName;/*set the name of the application */
}
if (processImageFileName == null)
{
application.ProcessImageFileName = System.Reflection.Assembly.GetExecutingAssembly().Location; /* set this property to the location of the executable file of the application*/
}
else
{
application.ProcessImageFileName = processImageFileName; /* set this property to the location of the executable file of the application*/
}
application.Enabled = true; //enable it
/*now add this application to AuthorizedApplications collection */
Type NetFwMgrType = Type.GetTypeFromProgID("HNetCfg.FwMgr", false);
INetFwMgr mgr = (INetFwMgr)Activator.CreateInstance(NetFwMgrType);
applications = (INetFwAuthorizedApplications)mgr.LocalPolicy.CurrentProfile.AuthorizedApplications;
applications.Add(application);
}
我可以通过将application
设置为null
来消除此错误,但这会导致运行时空引用错误。
编辑:
这是我正在调整代码的地方。我希望它能提供更多背景信息 http://blogs.msdn.com/b/securitytools/archive/2009/08/21/automating-windows-firewall-settings-with-c.aspx
答案 0 :(得分:8)
你永远不会初始化
application
在此之前使用它:
application.Name = System.AppDomain.CurrentDomain.FriendlyName;
变量应用程序定义为:
INetFwAuthorizedApplication application
您需要分配实现接口INetFwAuthorizedApplication
的类的实例。
在某个地方,项目中必须有一个(或可能更多)类看起来像这样:
public class SomeClass : INetFwAuthorizedApplication
{
// ...
}
public class AnotherClass : INetFwAuthorizedApplication
{
// ...
}
您需要确定应该使用哪个类(SomeClass,AnotherClass)然后分配适当的对象,例如像这样:
INetFwAuthorizedApplication application = new SomeClass();
答案 1 :(得分:1)
接口用于描述对象的作用,而不是具体的作用。要加入“真实世界”术语,界面可能如下:
使用ISmallerThanABreadbox
方法 FitIntoBreadbox()
。我不能要求你给我“小于面包箱”......因为这没有任何意义。我只能请你给我一些“小于面包箱”的东西。你必须想出你自己的对象,在它上面有接口是有意义的。苹果比面包箱小,所以如果你的面包箱只能容纳比它小的物品,那么苹果就是ISmallerThanABreadbox
界面的理想选择。
另一个例子是IGraspable
,Hold()
方法和FitsInPocket
bool属性。你可以要求给你一些可以抓住的东西,这些东西可能放在你的口袋里,也可能放在口袋里,但是你不能要求“可以抓住”。
希望有帮助...